aboutsummaryrefslogtreecommitdiffhomepage
path: root/resources
diff options
context:
space:
mode:
authorGravatar reed <reed@chromium.org>2014-11-02 19:19:34 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-11-02 19:19:34 -0800
commitde330ffc5632b91a1025235e4633a1ddbb846aa4 (patch)
tree5bbec02eeef39f527441496f55b7f76bec6f0bc7 /resources
parent181093939cf6e6d07fda0d441bad7abbbd6e71cb (diff)
add code-style for slides
BUG=skia: TBR= Review URL: https://codereview.chromium.org/697923002
Diffstat (limited to 'resources')
-rw-r--r--resources/slides.lua21
-rw-r--r--resources/slides_content.lua1
-rw-r--r--resources/slides_content2.lua96
-rw-r--r--resources/slides_utils.lua21
4 files changed, 131 insertions, 8 deletions
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
<transition= rotate>
+<blockstyle = code>
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
+
+<blockstyle = code>
+void onDraw(SkCanvas* canvas) {
+ SkPaint paint;
+ paint.setFoo(...);
+ canvas->drawRect(..., paint);
+ paint.setBar(...);
+ canvas->drawOval(..., paint);
+}
+
+<blockstyle = code>
+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()
+
+<blockstyle = code>
+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