| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2006 The Android Open Source Project | 2  * Copyright 2006 The Android Open Source Project | 
| 3  * | 3  * | 
| 4  * Use of this source code is governed by a BSD-style license that can be | 4  * Use of this source code is governed by a BSD-style license that can be | 
| 5  * found in the LICENSE file. | 5  * found in the LICENSE file. | 
| 6  */ | 6  */ | 
| 7 | 7 | 
| 8 #ifndef SkCanvas_DEFINED | 8 #ifndef SkCanvas_DEFINED | 
| 9 #define SkCanvas_DEFINED | 9 #define SkCanvas_DEFINED | 
| 10 | 10 | 
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 371         When the balancing call to restore() is made, the previous matrix, clip, | 371         When the balancing call to restore() is made, the previous matrix, clip, | 
| 372         and drawFilter are restored. | 372         and drawFilter are restored. | 
| 373         @param flags The flags govern what portion of the Matrix/Clip/drawFilter | 373         @param flags The flags govern what portion of the Matrix/Clip/drawFilter | 
| 374                      state the save (and matching restore) effect. For example, | 374                      state the save (and matching restore) effect. For example, | 
| 375                      if only kMatrix is specified, then only the matrix state | 375                      if only kMatrix is specified, then only the matrix state | 
| 376                      will be pushed and popped. Likewise for the clip if kClip | 376                      will be pushed and popped. Likewise for the clip if kClip | 
| 377                      is specified.  However, the drawFilter is always affected | 377                      is specified.  However, the drawFilter is always affected | 
| 378                      by calls to save/restore. | 378                      by calls to save/restore. | 
| 379         @return The value to pass to restoreToCount() to balance this save() | 379         @return The value to pass to restoreToCount() to balance this save() | 
| 380     */ | 380     */ | 
| 381     virtual int save(SaveFlags flags = kMatrixClip_SaveFlag); | 381     int save(SaveFlags flags = kMatrixClip_SaveFlag); | 
| 382 | 382 | 
| 383     /** This behaves the same as save(), but in addition it allocates an | 383     /** This behaves the same as save(), but in addition it allocates an | 
| 384         offscreen bitmap. All drawing calls are directed there, and only when | 384         offscreen bitmap. All drawing calls are directed there, and only when | 
| 385         the balancing call to restore() is made is that offscreen transfered to | 385         the balancing call to restore() is made is that offscreen transfered to | 
| 386         the canvas (or the previous layer). | 386         the canvas (or the previous layer). | 
| 387         @param bounds (may be null) This rect, if non-null, is used as a hint to | 387         @param bounds (may be null) This rect, if non-null, is used as a hint to | 
| 388                       limit the size of the offscreen, and thus drawing may be | 388                       limit the size of the offscreen, and thus drawing may be | 
| 389                       clipped to it, though that clipping is not guaranteed to | 389                       clipped to it, though that clipping is not guaranteed to | 
| 390                       happen. If exact clipping is desired, use clipRect(). | 390                       happen. If exact clipping is desired, use clipRect(). | 
| 391         @param paint (may be null) This is copied, and is applied to the | 391         @param paint (may be null) This is copied, and is applied to the | 
| 392                      offscreen when restore() is called | 392                      offscreen when restore() is called | 
| 393         @param flags  LayerFlags | 393         @param flags  LayerFlags | 
| 394         @return The value to pass to restoreToCount() to balance this save() | 394         @return The value to pass to restoreToCount() to balance this save() | 
| 395     */ | 395     */ | 
| 396     virtual int saveLayer(const SkRect* bounds, const SkPaint* paint, | 396     int saveLayer(const SkRect* bounds, const SkPaint* paint, | 
| 397                           SaveFlags flags = kARGB_ClipLayer_SaveFlag); | 397                   SaveFlags flags = kARGB_ClipLayer_SaveFlag); | 
| 398 | 398 | 
| 399     /** This behaves the same as save(), but in addition it allocates an | 399     /** This behaves the same as save(), but in addition it allocates an | 
| 400         offscreen bitmap. All drawing calls are directed there, and only when | 400         offscreen bitmap. All drawing calls are directed there, and only when | 
| 401         the balancing call to restore() is made is that offscreen transfered to | 401         the balancing call to restore() is made is that offscreen transfered to | 
| 402         the canvas (or the previous layer). | 402         the canvas (or the previous layer). | 
| 403         @param bounds (may be null) This rect, if non-null, is used as a hint to | 403         @param bounds (may be null) This rect, if non-null, is used as a hint to | 
| 404                       limit the size of the offscreen, and thus drawing may be | 404                       limit the size of the offscreen, and thus drawing may be | 
| 405                       clipped to it, though that clipping is not guaranteed to | 405                       clipped to it, though that clipping is not guaranteed to | 
| 406                       happen. If exact clipping is desired, use clipRect(). | 406                       happen. If exact clipping is desired, use clipRect(). | 
| 407         @param alpha  This is applied to the offscreen when restore() is called. | 407         @param alpha  This is applied to the offscreen when restore() is called. | 
| 408         @param flags  LayerFlags | 408         @param flags  LayerFlags | 
| 409         @return The value to pass to restoreToCount() to balance this save() | 409         @return The value to pass to restoreToCount() to balance this save() | 
| 410     */ | 410     */ | 
| 411     int saveLayerAlpha(const SkRect* bounds, U8CPU alpha, | 411     int saveLayerAlpha(const SkRect* bounds, U8CPU alpha, | 
| 412                        SaveFlags flags = kARGB_ClipLayer_SaveFlag); | 412                        SaveFlags flags = kARGB_ClipLayer_SaveFlag); | 
| 413 | 413 | 
| 414     /** This call balances a previous call to save(), and is used to remove all | 414     /** This call balances a previous call to save(), and is used to remove all | 
| 415         modifications to the matrix/clip/drawFilter state since the last save | 415         modifications to the matrix/clip/drawFilter state since the last save | 
| 416         call. | 416         call. | 
| 417         It is an error to call restore() more times than save() was called. | 417         It is an error to call restore() more times than save() was called. | 
| 418     */ | 418     */ | 
| 419     virtual void restore(); | 419     void restore(); | 
| 420 | 420 | 
| 421     /** Returns the number of matrix/clip states on the SkCanvas' private stack. | 421     /** Returns the number of matrix/clip states on the SkCanvas' private stack. | 
| 422         This will equal # save() calls - # restore() calls + 1. The save count o
      n | 422         This will equal # save() calls - # restore() calls + 1. The save count o
      n | 
| 423         a new canvas is 1. | 423         a new canvas is 1. | 
| 424     */ | 424     */ | 
| 425     int getSaveCount() const; | 425     int getSaveCount() const; | 
| 426 | 426 | 
| 427     /** Efficient way to pop any calls to save() that happened after the save | 427     /** Efficient way to pop any calls to save() that happened after the save | 
| 428         count reached saveCount. It is an error for saveCount to be greater than | 428         count reached saveCount. It is an error for saveCount to be greater than | 
| 429         getSaveCount(). To pop all the way back to the initial matrix/clip conte
      xt | 429         getSaveCount(). To pop all the way back to the initial matrix/clip conte
      xt | 
| (...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1194     GrRenderTarget* internal_private_accessTopLayerRenderTarget(); | 1194     GrRenderTarget* internal_private_accessTopLayerRenderTarget(); | 
| 1195 | 1195 | 
| 1196 protected: | 1196 protected: | 
| 1197     // default impl defers to getDevice()->newSurface(info) | 1197     // default impl defers to getDevice()->newSurface(info) | 
| 1198     virtual SkSurface* onNewSurface(const SkImageInfo&); | 1198     virtual SkSurface* onNewSurface(const SkImageInfo&); | 
| 1199 | 1199 | 
| 1200     // default impl defers to its device | 1200     // default impl defers to its device | 
| 1201     virtual const void* onPeekPixels(SkImageInfo*, size_t* rowBytes); | 1201     virtual const void* onPeekPixels(SkImageInfo*, size_t* rowBytes); | 
| 1202     virtual void* onAccessTopLayerPixels(SkImageInfo*, size_t* rowBytes); | 1202     virtual void* onAccessTopLayerPixels(SkImageInfo*, size_t* rowBytes); | 
| 1203 | 1203 | 
|  | 1204     // Subclass save/restore notifiers. | 
|  | 1205     // Overriders should call the corresponding INHERITED method up the inherita
      nce chain. | 
|  | 1206     // willSaveLayer()'s return value may suppress full layer allocation. | 
|  | 1207     enum SaveLayerStrategy { | 
|  | 1208         kFullLayer_SaveLayerStrategy, | 
|  | 1209         kNoLayer_SaveLayerStrategy | 
|  | 1210     }; | 
|  | 1211     virtual void willSave(SaveFlags); | 
|  | 1212     virtual SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveF
      lags); | 
|  | 1213     virtual void willRestore(); | 
|  | 1214 | 
| 1204     virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); | 1215     virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); | 
| 1205 | 1216 | 
| 1206     enum ClipEdgeStyle { | 1217     enum ClipEdgeStyle { | 
| 1207         kHard_ClipEdgeStyle, | 1218         kHard_ClipEdgeStyle, | 
| 1208         kSoft_ClipEdgeStyle | 1219         kSoft_ClipEdgeStyle | 
| 1209     }; | 1220     }; | 
| 1210 | 1221 | 
| 1211     virtual void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle e
      dgeStyle); | 1222     virtual void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle e
      dgeStyle); | 
| 1212     virtual void onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyl
      e edgeStyle); | 1223     virtual void onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyl
      e edgeStyle); | 
| 1213     virtual void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle e
      dgeStyle); | 1224     virtual void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle e
      dgeStyle); | 
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1294     // internal methods are not virtual, so they can safely be called by other | 1305     // internal methods are not virtual, so they can safely be called by other | 
| 1295     // canvas apis, without confusing subclasses (like SkPictureRecording) | 1306     // canvas apis, without confusing subclasses (like SkPictureRecording) | 
| 1296     void internalDrawBitmap(const SkBitmap&, const SkMatrix& m, const SkPaint* p
      aint); | 1307     void internalDrawBitmap(const SkBitmap&, const SkMatrix& m, const SkPaint* p
      aint); | 
| 1297     void internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, | 1308     void internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, | 
| 1298                                 const SkRect& dst, const SkPaint* paint, | 1309                                 const SkRect& dst, const SkPaint* paint, | 
| 1299                                 DrawBitmapRectFlags flags); | 1310                                 DrawBitmapRectFlags flags); | 
| 1300     void internalDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, | 1311     void internalDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, | 
| 1301                                 const SkRect& dst, const SkPaint* paint); | 1312                                 const SkRect& dst, const SkPaint* paint); | 
| 1302     void internalDrawPaint(const SkPaint& paint); | 1313     void internalDrawPaint(const SkPaint& paint); | 
| 1303     int internalSaveLayer(const SkRect* bounds, const SkPaint* paint, | 1314     int internalSaveLayer(const SkRect* bounds, const SkPaint* paint, | 
| 1304                           SaveFlags, bool justForImageFilter); | 1315                           SaveFlags, bool justForImageFilter, SaveLayerStrategy 
      strategy); | 
| 1305     void internalDrawDevice(SkBaseDevice*, int x, int y, const SkPaint*); | 1316     void internalDrawDevice(SkBaseDevice*, int x, int y, const SkPaint*); | 
| 1306 | 1317 | 
| 1307     // shared by save() and saveLayer() | 1318     // shared by save() and saveLayer() | 
| 1308     int internalSave(SaveFlags flags); | 1319     int internalSave(SaveFlags flags); | 
| 1309     void internalRestore(); | 1320     void internalRestore(); | 
| 1310     static void DrawRect(const SkDraw& draw, const SkPaint& paint, | 1321     static void DrawRect(const SkDraw& draw, const SkPaint& paint, | 
| 1311                          const SkRect& r, SkScalar textSize); | 1322                          const SkRect& r, SkScalar textSize); | 
| 1312     static void DrawTextDecorations(const SkDraw& draw, const SkPaint& paint, | 1323     static void DrawTextDecorations(const SkDraw& draw, const SkPaint& paint, | 
| 1313                                     const char text[], size_t byteLength, | 1324                                     const char text[], size_t byteLength, | 
| 1314                                     SkScalar x, SkScalar y); | 1325                                     SkScalar x, SkScalar y); | 
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1447     bool asROBitmap(SkBitmap*) const; | 1458     bool asROBitmap(SkBitmap*) const; | 
| 1448 | 1459 | 
| 1449 private: | 1460 private: | 
| 1450     SkBitmap    fBitmap;    // used if peekPixels() fails | 1461     SkBitmap    fBitmap;    // used if peekPixels() fails | 
| 1451     const void* fAddr;      // NULL on failure | 1462     const void* fAddr;      // NULL on failure | 
| 1452     SkImageInfo fInfo; | 1463     SkImageInfo fInfo; | 
| 1453     size_t      fRowBytes; | 1464     size_t      fRowBytes; | 
| 1454 }; | 1465 }; | 
| 1455 | 1466 | 
| 1456 #endif | 1467 #endif | 
| OLD | NEW | 
|---|