diff options
Diffstat (limited to 'resources/slides_content2.lua')
-rw-r--r-- | resources/slides_content2.lua | 96 |
1 files changed, 96 insertions, 0 deletions
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 |