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 |
11 #include "SkTypes.h" | 11 #include "SkTypes.h" |
12 #include "SkBitmap.h" | 12 #include "SkBitmap.h" |
13 #include "SkDeque.h" | 13 #include "SkDeque.h" |
14 #include "SkClipStack.h" | 14 #include "SkClipStack.h" |
15 #include "SkPaint.h" | 15 #include "SkPaint.h" |
16 #include "SkRefCnt.h" | 16 #include "SkRefCnt.h" |
17 #include "SkPath.h" | 17 #include "SkPath.h" |
18 #include "SkRegion.h" | 18 #include "SkRegion.h" |
19 #include "SkXfermode.h" | 19 #include "SkXfermode.h" |
20 | 20 |
21 // if not defined, we always assume ClipToLayer for saveLayer() | 21 // if not defined, we always assume ClipToLayer for saveLayer() |
22 //#define SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG | 22 //#define SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG |
23 | 23 |
24 | 24 |
25 //#define SK_SUPPORT_LEGACY_GETCLIPTYPE | 25 //#define SK_SUPPORT_LEGACY_GETCLIPTYPE |
26 //#define SK_SUPPORT_LEGACY_GETTOTALCLIP | 26 //#define SK_SUPPORT_LEGACY_GETTOTALCLIP |
27 //#define SK_SUPPORT_LEGACY_GETTOPDEVICE | 27 //#define SK_SUPPORT_LEGACY_GETTOPDEVICE |
28 | 28 |
29 //#define SK_SUPPORT_LEGACY_DRAWTEXT_VIRTUAL | |
30 #ifdef SK_SUPPORT_LEGACY_DRAWTEXT_VIRTUAL | |
31 #define SK_LEGACY_DRAWTEXT_VIRTUAL virtual | |
32 #else | |
33 #define SK_LEGACY_DRAWTEXT_VIRTUAL | |
34 #endif | |
35 | |
36 class SkBounder; | 29 class SkBounder; |
37 class SkBaseDevice; | 30 class SkBaseDevice; |
38 class SkDraw; | 31 class SkDraw; |
39 class SkDrawFilter; | 32 class SkDrawFilter; |
40 class SkMetaData; | 33 class SkMetaData; |
41 class SkPicture; | 34 class SkPicture; |
42 class SkRRect; | 35 class SkRRect; |
43 class SkSurface; | 36 class SkSurface; |
44 class SkSurface_Base; | 37 class SkSurface_Base; |
45 class GrContext; | 38 class GrContext; |
(...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
868 const SkPaint* paint = NULL); | 861 const SkPaint* paint = NULL); |
869 | 862 |
870 /** Draw the text, with origin at (x,y), using the specified paint. | 863 /** Draw the text, with origin at (x,y), using the specified paint. |
871 The origin is interpreted based on the Align setting in the paint. | 864 The origin is interpreted based on the Align setting in the paint. |
872 @param text The text to be drawn | 865 @param text The text to be drawn |
873 @param byteLength The number of bytes to read from the text parameter | 866 @param byteLength The number of bytes to read from the text parameter |
874 @param x The x-coordinate of the origin of the text being drawn | 867 @param x The x-coordinate of the origin of the text being drawn |
875 @param y The y-coordinate of the origin of the text being drawn | 868 @param y The y-coordinate of the origin of the text being drawn |
876 @param paint The paint used for the text (e.g. color, size, style) | 869 @param paint The paint used for the text (e.g. color, size, style) |
877 */ | 870 */ |
878 SK_LEGACY_DRAWTEXT_VIRTUAL void drawText(const void* text, size_t byteLength
, SkScalar x, | 871 virtual void drawText(const void* text, size_t byteLength, SkScalar x, |
879 SkScalar y, const SkPaint& paint); | 872 SkScalar y, const SkPaint& paint); |
880 | 873 |
881 /** Draw the text, with each character/glyph origin specified by the pos[] | 874 /** Draw the text, with each character/glyph origin specified by the pos[] |
882 array. The origin is interpreted by the Align setting in the paint. | 875 array. The origin is interpreted by the Align setting in the paint. |
883 @param text The text to be drawn | 876 @param text The text to be drawn |
884 @param byteLength The number of bytes to read from the text parameter | 877 @param byteLength The number of bytes to read from the text parameter |
885 @param pos Array of positions, used to position each character | 878 @param pos Array of positions, used to position each character |
886 @param paint The paint used for the text (e.g. color, size, style) | 879 @param paint The paint used for the text (e.g. color, size, style) |
887 */ | 880 */ |
888 SK_LEGACY_DRAWTEXT_VIRTUAL void drawPosText(const void* text, size_t byteLen
gth, | 881 virtual void drawPosText(const void* text, size_t byteLength, |
889 const SkPoint pos[], const SkPaint& paint); | 882 const SkPoint pos[], const SkPaint& paint); |
890 | 883 |
891 /** Draw the text, with each character/glyph origin specified by the x | 884 /** Draw the text, with each character/glyph origin specified by the x |
892 coordinate taken from the xpos[] array, and the y from the constY param. | 885 coordinate taken from the xpos[] array, and the y from the constY param. |
893 The origin is interpreted by the Align setting in the paint. | 886 The origin is interpreted by the Align setting in the paint. |
894 @param text The text to be drawn | 887 @param text The text to be drawn |
895 @param byteLength The number of bytes to read from the text parameter | 888 @param byteLength The number of bytes to read from the text parameter |
896 @param xpos Array of x-positions, used to position each character | 889 @param xpos Array of x-positions, used to position each character |
897 @param constY The shared Y coordinate for all of the positions | 890 @param constY The shared Y coordinate for all of the positions |
898 @param paint The paint used for the text (e.g. color, size, style) | 891 @param paint The paint used for the text (e.g. color, size, style) |
899 */ | 892 */ |
900 SK_LEGACY_DRAWTEXT_VIRTUAL void drawPosTextH(const void* text, size_t byteLe
ngth, | 893 virtual void drawPosTextH(const void* text, size_t byteLength, |
901 const SkScalar xpos[], SkScalar constY, | 894 const SkScalar xpos[], SkScalar constY, |
902 const SkPaint& paint); | 895 const SkPaint& paint); |
903 | 896 |
904 /** Draw the text, with origin at (x,y), using the specified paint, along | 897 /** Draw the text, with origin at (x,y), using the specified paint, along |
905 the specified path. The paint's Align setting determins where along the | 898 the specified path. The paint's Align setting determins where along the |
906 path to start the text. | 899 path to start the text. |
907 @param text The text to be drawn | 900 @param text The text to be drawn |
908 @param byteLength The number of bytes to read from the text parameter | 901 @param byteLength The number of bytes to read from the text parameter |
909 @param path The path the text should follow for its baseline | 902 @param path The path the text should follow for its baseline |
910 @param hOffset The distance along the path to add to the text's | 903 @param hOffset The distance along the path to add to the text's |
911 starting position | 904 starting position |
912 @param vOffset The distance above(-) or below(+) the path to | 905 @param vOffset The distance above(-) or below(+) the path to |
913 position the text | 906 position the text |
914 @param paint The paint used for the text | 907 @param paint The paint used for the text |
915 */ | 908 */ |
916 void drawTextOnPathHV(const void* text, size_t byteLength, | 909 void drawTextOnPathHV(const void* text, size_t byteLength, |
917 const SkPath& path, SkScalar hOffset, | 910 const SkPath& path, SkScalar hOffset, |
918 SkScalar vOffset, const SkPaint& paint); | 911 SkScalar vOffset, const SkPaint& paint); |
919 | 912 |
920 /** Draw the text, with origin at (x,y), using the specified paint, along | 913 /** Draw the text, with origin at (x,y), using the specified paint, along |
921 the specified path. The paint's Align setting determins where along the | 914 the specified path. The paint's Align setting determins where along the |
922 path to start the text. | 915 path to start the text. |
923 @param text The text to be drawn | 916 @param text The text to be drawn |
924 @param byteLength The number of bytes to read from the text parameter | 917 @param byteLength The number of bytes to read from the text parameter |
925 @param path The path the text should follow for its baseline | 918 @param path The path the text should follow for its baseline |
926 @param matrix (may be null) Applied to the text before it is | 919 @param matrix (may be null) Applied to the text before it is |
927 mapped onto the path | 920 mapped onto the path |
928 @param paint The paint used for the text | 921 @param paint The paint used for the text |
929 */ | 922 */ |
930 SK_LEGACY_DRAWTEXT_VIRTUAL void drawTextOnPath(const void* text, size_t byte
Length, | 923 virtual void drawTextOnPath(const void* text, size_t byteLength, |
931 const SkPath& path, const SkMatrix* matrix, | 924 const SkPath& path, const SkMatrix* matrix, |
932 const SkPaint& paint); | 925 const SkPaint& paint); |
933 | 926 |
934 /** PRIVATE / EXPERIMENTAL -- do not call | 927 /** PRIVATE / EXPERIMENTAL -- do not call |
935 Perform back-end analysis/optimization of a picture. This may attach | 928 Perform back-end analysis/optimization of a picture. This may attach |
936 optimization data to the picture which can be used by a later | 929 optimization data to the picture which can be used by a later |
937 drawPicture call. | 930 drawPicture call. |
938 @param picture The recorded drawing commands to analyze/optimize | 931 @param picture The recorded drawing commands to analyze/optimize |
939 */ | 932 */ |
940 void EXPERIMENTAL_optimize(SkPicture* picture); | 933 void EXPERIMENTAL_optimize(SkPicture* picture); |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1186 }; | 1179 }; |
1187 virtual void willSave(SaveFlags); | 1180 virtual void willSave(SaveFlags); |
1188 virtual SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveF
lags); | 1181 virtual SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveF
lags); |
1189 virtual void willRestore(); | 1182 virtual void willRestore(); |
1190 | 1183 |
1191 virtual void didConcat(const SkMatrix&); | 1184 virtual void didConcat(const SkMatrix&); |
1192 virtual void didSetMatrix(const SkMatrix&); | 1185 virtual void didSetMatrix(const SkMatrix&); |
1193 | 1186 |
1194 virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); | 1187 virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); |
1195 | 1188 |
1196 #ifndef SK_SUPPORT_LEGACY_DRAWTEXT_VIRTUAL | |
1197 virtual void onDrawText(const void* text, size_t byteLength, SkScalar x, | |
1198 SkScalar y, const SkPaint& paint); | |
1199 | |
1200 virtual void onDrawPosText(const void* text, size_t byteLength, | |
1201 const SkPoint pos[], const SkPaint& paint); | |
1202 | |
1203 virtual void onDrawPosTextH(const void* text, size_t byteLength, | |
1204 const SkScalar xpos[], SkScalar constY, | |
1205 const SkPaint& paint); | |
1206 | |
1207 virtual void onDrawTextOnPath(const void* text, size_t byteLength, | |
1208 const SkPath& path, const SkMatrix* matrix, | |
1209 const SkPaint& paint); | |
1210 #endif | |
1211 | |
1212 enum ClipEdgeStyle { | 1189 enum ClipEdgeStyle { |
1213 kHard_ClipEdgeStyle, | 1190 kHard_ClipEdgeStyle, |
1214 kSoft_ClipEdgeStyle | 1191 kSoft_ClipEdgeStyle |
1215 }; | 1192 }; |
1216 | 1193 |
1217 virtual void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle e
dgeStyle); | 1194 virtual void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle e
dgeStyle); |
1218 virtual void onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyl
e edgeStyle); | 1195 virtual void onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyl
e edgeStyle); |
1219 virtual void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle e
dgeStyle); | 1196 virtual void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle e
dgeStyle); |
1220 virtual void onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op); | 1197 virtual void onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op); |
1221 | 1198 |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1458 bool asROBitmap(SkBitmap*) const; | 1435 bool asROBitmap(SkBitmap*) const; |
1459 | 1436 |
1460 private: | 1437 private: |
1461 SkBitmap fBitmap; // used if peekPixels() fails | 1438 SkBitmap fBitmap; // used if peekPixels() fails |
1462 const void* fAddr; // NULL on failure | 1439 const void* fAddr; // NULL on failure |
1463 SkImageInfo fInfo; | 1440 SkImageInfo fInfo; |
1464 size_t fRowBytes; | 1441 size_t fRowBytes; |
1465 }; | 1442 }; |
1466 | 1443 |
1467 #endif | 1444 #endif |
OLD | NEW |