OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #include "SkAnnotation.h" | 9 #include "SkAnnotation.h" |
10 #include "SkBitmapDevice.h" | 10 #include "SkBitmapDevice.h" |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 const SkPaint*) SK_OVERRIDE; | 242 const SkPaint*) SK_OVERRIDE; |
243 virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, | 243 virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, |
244 const SkRect& dst, const SkPaint* paint, | 244 const SkRect& dst, const SkPaint* paint, |
245 DrawBitmapRectFlags flags) SK_OVERRIDE; | 245 DrawBitmapRectFlags flags) SK_OVERRIDE; |
246 virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, | 246 virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, |
247 const SkPaint*) SK_OVERRIDE; | 247 const SkPaint*) SK_OVERRIDE; |
248 virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, | 248 virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, |
249 const SkRect& dst, const SkPaint* paint = NULL)
SK_OVERRIDE; | 249 const SkRect& dst, const SkPaint* paint = NULL)
SK_OVERRIDE; |
250 virtual void drawSprite(const SkBitmap&, int left, int top, | 250 virtual void drawSprite(const SkBitmap&, int left, int top, |
251 const SkPaint*) SK_OVERRIDE; | 251 const SkPaint*) SK_OVERRIDE; |
| 252 virtual void drawText(const void* text, size_t byteLength, SkScalar x, |
| 253 SkScalar y, const SkPaint&) SK_OVERRIDE; |
| 254 virtual void drawPosText(const void* text, size_t byteLength, |
| 255 const SkPoint pos[], const SkPaint&) SK_OVERRIDE; |
| 256 virtual void drawPosTextH(const void* text, size_t byteLength, |
| 257 const SkScalar xpos[], SkScalar constY, |
| 258 const SkPaint&) SK_OVERRIDE; |
| 259 virtual void drawTextOnPath(const void* text, size_t byteLength, |
| 260 const SkPath& path, const SkMatrix* matrix, |
| 261 const SkPaint&) SK_OVERRIDE; |
252 virtual void drawPicture(SkPicture& picture) SK_OVERRIDE; | 262 virtual void drawPicture(SkPicture& picture) SK_OVERRIDE; |
253 virtual void drawVertices(VertexMode, int vertexCount, | 263 virtual void drawVertices(VertexMode, int vertexCount, |
254 const SkPoint vertices[], const SkPoint texs[], | 264 const SkPoint vertices[], const SkPoint texs[], |
255 const SkColor colors[], SkXfermode*, | 265 const SkColor colors[], SkXfermode*, |
256 const uint16_t indices[], int indexCount, | 266 const uint16_t indices[], int indexCount, |
257 const SkPaint&) SK_OVERRIDE; | 267 const SkPaint&) SK_OVERRIDE; |
258 virtual void drawData(const void*, size_t) SK_OVERRIDE; | 268 virtual void drawData(const void*, size_t) SK_OVERRIDE; |
259 virtual void beginCommentGroup(const char* description) SK_OVERRIDE; | 269 virtual void beginCommentGroup(const char* description) SK_OVERRIDE; |
260 virtual void addComment(const char* kywd, const char* value) SK_OVERRIDE; | 270 virtual void addComment(const char* kywd, const char* value) SK_OVERRIDE; |
261 virtual void endCommentGroup() SK_OVERRIDE; | 271 virtual void endCommentGroup() SK_OVERRIDE; |
262 | 272 |
263 /** | 273 /** |
264 * Flatten an SkBitmap to send to the reader, where it will be referenced | 274 * Flatten an SkBitmap to send to the reader, where it will be referenced |
265 * according to slot. | 275 * according to slot. |
266 */ | 276 */ |
267 bool shuttleBitmap(const SkBitmap&, int32_t slot); | 277 bool shuttleBitmap(const SkBitmap&, int32_t slot); |
268 | 278 |
269 protected: | 279 protected: |
270 virtual void willSave(SaveFlags) SK_OVERRIDE; | 280 virtual void willSave(SaveFlags) SK_OVERRIDE; |
271 virtual SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveF
lags) SK_OVERRIDE; | 281 virtual SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveF
lags) SK_OVERRIDE; |
272 virtual void willRestore() SK_OVERRIDE; | 282 virtual void willRestore() SK_OVERRIDE; |
273 | 283 |
274 virtual void didConcat(const SkMatrix&) SK_OVERRIDE; | 284 virtual void didConcat(const SkMatrix&) SK_OVERRIDE; |
275 virtual void didSetMatrix(const SkMatrix&) SK_OVERRIDE; | 285 virtual void didSetMatrix(const SkMatrix&) SK_OVERRIDE; |
276 | 286 |
277 virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK
_OVERRIDE; | 287 virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK
_OVERRIDE; |
278 virtual void onDrawText(const void* text, size_t byteLength, SkScalar x, SkS
calar y, | |
279 const SkPaint&) SK_OVERRIDE; | |
280 virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoin
t pos[], | |
281 const SkPaint&) SK_OVERRIDE; | |
282 virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkSca
lar xpos[], | |
283 SkScalar constY, const SkPaint&) SK_OVERRIDE; | |
284 virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkP
ath& path, | |
285 const SkMatrix* matrix, const SkPaint&) SK_OVE
RRIDE; | |
286 | 288 |
287 virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERR
IDE; | 289 virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERR
IDE; |
288 virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVE
RRIDE; | 290 virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVE
RRIDE; |
289 virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERR
IDE; | 291 virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERR
IDE; |
290 virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; | 292 virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; |
291 | 293 |
292 private: | 294 private: |
293 void recordTranslate(const SkMatrix&); | 295 void recordTranslate(const SkMatrix&); |
294 void recordScale(const SkMatrix&); | 296 void recordScale(const SkMatrix&); |
295 void recordConcat(const SkMatrix&); | 297 void recordConcat(const SkMatrix&); |
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 const SkPaint* paint) { | 843 const SkPaint* paint) { |
842 NOTIFY_SETUP(this); | 844 NOTIFY_SETUP(this); |
843 size_t opBytesNeeded = sizeof(int32_t) * 2; | 845 size_t opBytesNeeded = sizeof(int32_t) * 2; |
844 | 846 |
845 if (this->commonDrawBitmap(bm, kDrawSprite_DrawOp, 0, opBytesNeeded, paint))
{ | 847 if (this->commonDrawBitmap(bm, kDrawSprite_DrawOp, 0, opBytesNeeded, paint))
{ |
846 fWriter.write32(left); | 848 fWriter.write32(left); |
847 fWriter.write32(top); | 849 fWriter.write32(top); |
848 } | 850 } |
849 } | 851 } |
850 | 852 |
851 void SkGPipeCanvas::onDrawText(const void* text, size_t byteLength, SkScalar x,
SkScalar y, | 853 void SkGPipeCanvas::drawText(const void* text, size_t byteLength, SkScalar x, |
852 const SkPaint& paint) { | 854 SkScalar y, const SkPaint& paint) { |
853 if (byteLength) { | 855 if (byteLength) { |
854 NOTIFY_SETUP(this); | 856 NOTIFY_SETUP(this); |
855 this->writePaint(paint); | 857 this->writePaint(paint); |
856 if (this->needOpBytes(4 + SkAlign4(byteLength) + 2 * sizeof(SkScalar)))
{ | 858 if (this->needOpBytes(4 + SkAlign4(byteLength) + 2 * sizeof(SkScalar)))
{ |
857 this->writeOp(kDrawText_DrawOp); | 859 this->writeOp(kDrawText_DrawOp); |
858 fWriter.write32(byteLength); | 860 fWriter.write32(byteLength); |
859 fWriter.writePad(text, byteLength); | 861 fWriter.writePad(text, byteLength); |
860 fWriter.writeScalar(x); | 862 fWriter.writeScalar(x); |
861 fWriter.writeScalar(y); | 863 fWriter.writeScalar(y); |
862 } | 864 } |
863 } | 865 } |
864 } | 866 } |
865 | 867 |
866 void SkGPipeCanvas::onDrawPosText(const void* text, size_t byteLength, const SkP
oint pos[], | 868 void SkGPipeCanvas::drawPosText(const void* text, size_t byteLength, |
867 const SkPaint& paint) { | 869 const SkPoint pos[], const SkPaint& paint) { |
868 if (byteLength) { | 870 if (byteLength) { |
869 NOTIFY_SETUP(this); | 871 NOTIFY_SETUP(this); |
870 this->writePaint(paint); | 872 this->writePaint(paint); |
871 int count = paint.textToGlyphs(text, byteLength, NULL); | 873 int count = paint.textToGlyphs(text, byteLength, NULL); |
872 if (this->needOpBytes(4 + SkAlign4(byteLength) + 4 + count * sizeof(SkPo
int))) { | 874 if (this->needOpBytes(4 + SkAlign4(byteLength) + 4 + count * sizeof(SkPo
int))) { |
873 this->writeOp(kDrawPosText_DrawOp); | 875 this->writeOp(kDrawPosText_DrawOp); |
874 fWriter.write32(byteLength); | 876 fWriter.write32(byteLength); |
875 fWriter.writePad(text, byteLength); | 877 fWriter.writePad(text, byteLength); |
876 fWriter.write32(count); | 878 fWriter.write32(count); |
877 fWriter.write(pos, count * sizeof(SkPoint)); | 879 fWriter.write(pos, count * sizeof(SkPoint)); |
878 } | 880 } |
879 } | 881 } |
880 } | 882 } |
881 | 883 |
882 void SkGPipeCanvas::onDrawPosTextH(const void* text, size_t byteLength, const Sk
Scalar xpos[], | 884 void SkGPipeCanvas::drawPosTextH(const void* text, size_t byteLength, |
883 SkScalar constY, const SkPaint& paint) { | 885 const SkScalar xpos[], SkScalar constY, |
| 886 const SkPaint& paint) { |
884 if (byteLength) { | 887 if (byteLength) { |
885 NOTIFY_SETUP(this); | 888 NOTIFY_SETUP(this); |
886 this->writePaint(paint); | 889 this->writePaint(paint); |
887 int count = paint.textToGlyphs(text, byteLength, NULL); | 890 int count = paint.textToGlyphs(text, byteLength, NULL); |
888 if (this->needOpBytes(4 + SkAlign4(byteLength) + 4 + count * sizeof(SkSc
alar) + 4)) { | 891 if (this->needOpBytes(4 + SkAlign4(byteLength) + 4 + count * sizeof(SkSc
alar) + 4)) { |
889 this->writeOp(kDrawPosTextH_DrawOp); | 892 this->writeOp(kDrawPosTextH_DrawOp); |
890 fWriter.write32(byteLength); | 893 fWriter.write32(byteLength); |
891 fWriter.writePad(text, byteLength); | 894 fWriter.writePad(text, byteLength); |
892 fWriter.write32(count); | 895 fWriter.write32(count); |
893 fWriter.write(xpos, count * sizeof(SkScalar)); | 896 fWriter.write(xpos, count * sizeof(SkScalar)); |
894 fWriter.writeScalar(constY); | 897 fWriter.writeScalar(constY); |
895 } | 898 } |
896 } | 899 } |
897 } | 900 } |
898 | 901 |
899 void SkGPipeCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const
SkPath& path, | 902 void SkGPipeCanvas::drawTextOnPath(const void* text, size_t byteLength, |
900 const SkMatrix* matrix, const SkPaint& pain
t) { | 903 const SkPath& path, const SkMatrix* matrix, |
| 904 const SkPaint& paint) { |
901 if (byteLength) { | 905 if (byteLength) { |
902 NOTIFY_SETUP(this); | 906 NOTIFY_SETUP(this); |
903 unsigned flags = 0; | 907 unsigned flags = 0; |
904 size_t size = 4 + SkAlign4(byteLength) + path.writeToMemory(NULL); | 908 size_t size = 4 + SkAlign4(byteLength) + path.writeToMemory(NULL); |
905 if (matrix) { | 909 if (matrix) { |
906 flags |= kDrawTextOnPath_HasMatrix_DrawOpFlag; | 910 flags |= kDrawTextOnPath_HasMatrix_DrawOpFlag; |
907 size += matrix->writeToMemory(NULL); | 911 size += matrix->writeToMemory(NULL); |
908 } | 912 } |
909 this->writePaint(paint); | 913 this->writePaint(paint); |
910 if (this->needOpBytes(size)) { | 914 if (this->needOpBytes(size)) { |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1242 return fCanvas->shuttleBitmap(bitmap, slot); | 1246 return fCanvas->shuttleBitmap(bitmap, slot); |
1243 } | 1247 } |
1244 | 1248 |
1245 void BitmapShuttle::removeCanvas() { | 1249 void BitmapShuttle::removeCanvas() { |
1246 if (NULL == fCanvas) { | 1250 if (NULL == fCanvas) { |
1247 return; | 1251 return; |
1248 } | 1252 } |
1249 fCanvas->unref(); | 1253 fCanvas->unref(); |
1250 fCanvas = NULL; | 1254 fCanvas = NULL; |
1251 } | 1255 } |
OLD | NEW |