| --- |
| title: 'API Reference and Overview' |
| linkTitle: 'API Reference and Overview' |
| |
| weight: 5 |
| --- |
| |
| Skia documentation is actively under development. |
| |
| Some key classes are: |
| |
| - [SkAutoCanvasRestore](https://api.skia.org/classSkAutoCanvasRestore.html#details) - |
| Canvas save stack manager |
| - [SkBitmap](https://api.skia.org/classSkBitmap.html#details) - two-dimensional |
| raster pixel array |
| - [SkBlendMode](https://api.skia.org/SkBlendMode_8h.html) - pixel color |
| arithmetic |
| - [SkCanvas](https://api.skia.org/classSkCanvas.html#details) - drawing context |
| - [SkColor](https://api.skia.org/SkColor_8h.html) - color encoding using integer |
| numbers |
| - [SkFont](https://api.skia.org/classSkFont.html#details) - text style and |
| typeface |
| - [SkImage](https://api.skia.org/classSkImage.html#details) - two dimensional |
| array of pixels to draw |
| - [SkImageInfo](https://api.skia.org/structSkImageInfo.html#details) - pixel |
| dimensions and characteristics |
| - [SkIPoint](https://api.skia.org/structSkIPoint.html#details) - two integer |
| coordinates |
| - [SkIRect](https://api.skia.org/structSkIRect.html#details) - integer rectangle |
| - [SkMatrix](https://api.skia.org/classSkMatrix.html#details) - 3x3 |
| transformation matrix |
| - [SkPaint](https://api.skia.org/classSkPaint.html#details) - color, stroke, |
| font, effects |
| - [SkPath](https://api.skia.org/classSkPath.html#details) - sequence of |
| connected lines and curves |
| - [SkPicture](https://api.skia.org/classSkPicture.html#details) - sequence of |
| drawing commands |
| - [SkPixmap](https://api.skia.org/classSkPixmap.html#details) - pixel map: image |
| info and pixel address |
| - [SkPoint](https://api.skia.org/structSkPoint.html#details) - two floating |
| point coordinates |
| - [SkRRect](https://api.skia.org/classSkRRect.html#details) - floating point |
| rounded rectangle |
| - [SkRect](https://api.skia.org/structSkRect.html#details) - floating point |
| rectangle |
| - [SkRegion](https://api.skia.org/classSkRegion.html#details) - compressed |
| clipping mask |
| - [SkSurface](https://api.skia.org/classSkSurface.html#details) - drawing |
| destination |
| - [SkTextBlob](https://api.skia.org/classSkTextBlob.html#details) - runs of |
| glyphs |
| - [SkTextBlobBuilder](https://api.skia.org/classSkTextBlobBuilder.html#details) - |
| constructor for runs of glyphs |
| |
| All public APIs are indexed by Doxygen. |
| |
| - [Skia Doxygen](https://api.skia.org) |
| |
| ## Overview |
| |
| Skia is organized around the `SkCanvas` object. It is the host for the "draw" |
| calls: `drawRect`, `drawPath`, `drawText`, etc. Each of these has two |
| components: the primitive being drawn (`SkRect`, `SkPath`, etc.) and color/style |
| attributes (`SkPaint`). |
| |
| <!--?prettify lang=cc?--> |
| |
| canvas->drawRect(rect, paint); |
| |
| The paint holds much of the state describing how the rectangle (in this case) is |
| drawn: what color it is, if it is filled or stroked, how it should blend with |
| what was previously drawn. |
| |
| The canvas holds relatively little state. It points to the actual pixels being |
| drawn, and it maintains a stack of matrices and clips. Thus in the above call, |
| the canvas' current matrix may transform the coordinates of the rectangle |
| (translation, rotation, skewing, perspective), and the canvas' current clip may |
| restrict where on the canvas the rectangle will be drawn, but all other |
| stylistic attributes of the drawing are controlled by the paint. |
| |
| Using the SkCanvas API: |
| |
| 1. [SkCanvas Overview](/docs/user/api/skcanvas_overview) - the drawing context |
| 2. [SkPaint Overview](/docs/user/api/skpaint_overview) - color, stroke, font, |
| effects |
| 3. [SkCanvas Creation](/docs/user/api/skcanvas_creation) |