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