yishizhu 发表于 2013-1-15 02:20:06

Webkit 3

1. Skia developed for Android:
   * Windows : Skia + "Chromium Win"
   * Linux : Skia + "Chromium Linux"
   * Mac : mostly matches Safari,doesn't use Skia

2. GraphicsContext represents a generic drawing surface.
   Implementation split into two parts:
   * GraphicsContext.cpp : Cross-platform code
   * GraphicsContext.cpp : Platform-specific
   Shared header with #ifdefs,only one object

3. Fonts
   * Font.cpp
   * FontChromiumWin.cpp
   * FontLinux.cpp
   * FontMac.mm
   Fast path for simple text
   * GlyphPageTreeNode : Font,Character -> Font,Glyph
   * GlyphWidthMap : Glyph -> Width
   Complex path (Arabic,Indic)
   * Uniscribe,ATSUI,Harfbuzz

4. Images
   * Image.cpp
   * ImageSkia.cpp
   * ImageMac.cpp
   Hooks in all image decoders
   2 level memory cache
   * Decoded (uncompressed) data
   * Encoded (compressed) data

5. Painting in Test Shell(Win/Linux)
   * Get an "invalid rect" from the OS
   * Make a skia::PlatformCanvas,setup transform
       (wraps a SkCanvas to integrate with the OS)
   * Create a GraphicsContextSkia with the bitmap
   * WebKit paints into the canvas
   * Copy canvas to invalid area on screen

6. Painting in Chrome
   Browser and renderer must run asynchronously
   * Browser maintains a "backing store" of the tab
   * renderer paints get copied into this backing store
   RenderWidget,RenderWindgetHost handle paint & input
   RenderView inherits from RenderWidget to represent a "web page"
页: [1]
查看完整版本: Webkit 3