| Index: resources/slides_content2.lua
|
| diff --git a/resources/slides_content2.lua b/resources/slides_content2.lua
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d2a4016fbd1ae3489a6b06a61486e8b52f82deb8
|
| --- /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
|
|
|