From de330ffc5632b91a1025235e4633a1ddbb846aa4 Mon Sep 17 00:00:00 2001 From: reed Date: Sun, 2 Nov 2014 19:19:34 -0800 Subject: add code-style for slides BUG=skia: TBR= Review URL: https://codereview.chromium.org/697923002 --- resources/slides.lua | 21 ++++++++-- resources/slides_content.lua | 1 + resources/slides_content2.lua | 96 +++++++++++++++++++++++++++++++++++++++++++ resources/slides_utils.lua | 21 +++++++--- 4 files changed, 131 insertions(+), 8 deletions(-) create mode 100644 resources/slides_content2.lua (limited to 'resources') diff --git a/resources/slides.lua b/resources/slides.lua index 06bb81056f..057d213b85 100644 --- a/resources/slides.lua +++ b/resources/slides.lua @@ -10,7 +10,7 @@ end load_file("slides_utils") -gSlides = parse_file(io.open("/skia/trunk/resources/slides_content.lua", "r")) +gSlides = parse_file(io.open("/skia/trunk/resources/slides_content2.lua", "r")) function make_rect(l, t, r, b) return { left = l, top = t, right = r, bottom = b } @@ -26,12 +26,26 @@ function make_paint(typefacename, stylebits, size, color) return paint end -function drawSlide(canvas, slide, template) - template = template.slide -- need to sniff the slide to know if we're title or slide +function drawSlide(canvas, slide, master_template) + template = master_template.slide -- need to sniff the slide to know if we're title or slide local x = template.margin_x local y = template.margin_y + if slide.blockstyle == "code" then + local paint = master_template.codePaint + local fm = paint:getFontMetrics() + local height = #slide * (fm.descent - fm.ascent) + y = (480 - height) / 2 + for i = 1, #slide do + local node = slide[i] + y = y - fm.ascent + canvas:drawText(node.text, x, y, paint) + y = y + fm.descent + end + return + end + local scale = 1.25 for i = 1, #slide do local node = slide[i] @@ -72,6 +86,7 @@ function SkiaPoint_make_template() return { title = title, slide = slide, + codePaint = make_paint("Courier", 0, 24, { a=1, r=.9, g=.9, b=.9 }), } end diff --git a/resources/slides_content.lua b/resources/slides_content.lua index a2f376af08..9b20e43c6b 100644 --- a/resources/slides_content.lua +++ b/resources/slides_content.lua @@ -21,6 +21,7 @@ One Team -- many clients + Optimize for CPU variety - x86 - 32bit (SSE, SSE2, ...), 64bit - Arm - thumb, arm, NEON, ... 64bit? diff --git a/resources/slides_content2.lua b/resources/slides_content2.lua new file mode 100644 index 0000000000..d2a4016fbd --- /dev/null +++ b/resources/slides_content2.lua @@ -0,0 +1,96 @@ +Skia Update + +Skia : Overview +- portable 2D graphics engine +- src: geometry, images, text +- dst : raster, gpu, pdf, displaylist, *user-defined +- attr: shaders, filters, antialiasing, blending, *user-defined + +Skia : Clients +- Blink : direct and via GraphicsContext +- Chrome : ui/gfx and compositor +- Android framework +- third parties : e.g. Mozilla +- code.google.com/p/skia + +Skia : Porting +- C++ and some SIMD assembly +- Fonts : CoreText, FreeType, GDI, DirectWrite, *user-define +- Threads : wrappers for native apis +- Memory : wrappers for [new, malloc, discardable] + +Skia : API +- SkCanvas +-- save, saveLayer, restore +-- translate, scale, rotate, concat +-- clipRect, clipPath +- SkPaint +-- color, stroking, antialiasing, filtering +-- typeface, textSize, text-flags +-- effects: shader, color-filter, image-filter, mask-filter, xfermode + + +void onDraw(SkCanvas* canvas) { + SkPaint paint; + paint.setFoo(...); + canvas->drawRect(..., paint); + paint.setBar(...); + canvas->drawOval(..., paint); +} + + +void onDraw(SkCanvas* canvas) { + canvas->drawRect(..., fPaint0); + canvas->drawOval(..., fPaint1); +} + +Skia In Blink : GraphicsContext +- Similar +-- rects, paths, images, text +-- matrices, clips +- Different +-- save/restore affect matrix+clip PLUS all paint settings +-- both fill and stroke settings are specified +-- hence: fillRect(), strokeRect(), drawRect() + + +void onDraw(GraphicsContext* gc) { + gc->save(); + gc->setFoo(...); + gc->fillRect(...); + gc->setBar(...); + gc->fillOval(...); + gc->restore(); +} + +Skia In Blink : more than GraphicsContext +- Simple wrappers +-- FloatRect -- SkRect +-- Path -- SkPath +- Font.h + 21 others +-- SkTypeface + flags +- Image.h + 25 others +-- SkBitmap, SkImage + +Skia In Blink : Fonts +- Assist with code-sharing between platforms +- Runtime switch between GDI and DirectWrite +- Add SkFontMgr for selection +- Push LCD decision-making out of Blink + +Skia In Blink : Record-Time-Rasterization +- Direct rendering during “Paint” pass +-- Image scaling, filters +-- SVG patterns, masks +- Problematic in modern Blink +-- CTM not always known/knowable +-- Rendering backend not always known (gpu or cpu) +-- Rasterization takes (too much) time + +Skia In Blink : RTR response +- SkImageFilter w/ CPU and GPU implementations +- SkPaint::FilterLevel : none, low, medium (mipmaps), high +- SkPicture for caching SVG +- SkPicture + saveLayer() for masks +-- PathOps for resolving complex paths +- SkPictureShader for device-independent patterns diff --git a/resources/slides_utils.lua b/resources/slides_utils.lua index a0b42b4425..24e58cee51 100644 --- a/resources/slides_utils.lua +++ b/resources/slides_utils.lua @@ -58,6 +58,10 @@ function parse_transition_type(s) return s:match("^<%s*transition%s*=%s*(%a+)%s*>$") end +function parse_blockstyle_type(s) + return s:match("^<%s*blockstyle%s*=%s*(%a+)%s*>$") +end + function parse_file(file) local slides = {} local block = {} @@ -71,14 +75,21 @@ function parse_file(file) end else local transition_type = parse_transition_type(s) + local blockstyle = parse_blockstyle_type(s) if transition_type then block["transition"] = transition_type + elseif blockstyle then + block["blockstyle"] = blockstyle else - local n = count_hypens(s) - block[#block + 1] = { - indent = n, - text = trim_ws(s:sub(n + 1, -1)) - } + if block.blockstyle == "code" then + block[#block + 1] = { text = line } + else + local n = count_hypens(s) + block[#block + 1] = { + indent = n, + text = trim_ws(s:sub(n + 1, -1)) + } + end end end end -- cgit v1.2.3