Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 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 | 9 |
| 10 #include "SkDrawCommand.h" | 10 #include "SkDrawCommand.h" |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 80 Clear::Clear(SkColor color) { | 80 Clear::Clear(SkColor color) { |
| 81 fColor = color; | 81 fColor = color; |
| 82 fDrawType = DRAW_CLEAR; | 82 fDrawType = DRAW_CLEAR; |
| 83 fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 83 fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); |
| 84 } | 84 } |
| 85 | 85 |
| 86 void Clear::execute(SkCanvas* canvas) { | 86 void Clear::execute(SkCanvas* canvas) { |
| 87 canvas->clear(fColor); | 87 canvas->clear(fColor); |
| 88 } | 88 } |
| 89 | 89 |
| 90 ClipPath::ClipPath(const SkPath& path, SkRegion::Op op, bool doAA, SkBitmap& bit map) { | 90 namespace { |
| 91 | |
| 92 void xlate_and_scale_to_bounds(SkCanvas* canvas, const SkRect& bounds) { | |
| 93 const SkISize& size = canvas->getDeviceSize(); | |
| 94 | |
| 95 canvas->translate(size.fWidth/2.0f, size.fHeight/2.0f); | |
| 96 if (bounds.width() > bounds.height()) { | |
| 97 canvas->scale(SkDoubleToScalar((0.9*size.fWidth)/bounds.width()), | |
|
djsollen
2013/06/06 21:17:00
make this a variable
robertphillips
2013/06/07 00:00:17
Done.
| |
| 98 SkDoubleToScalar((0.9*size.fHeight)/bounds.width())); | |
| 99 } else { | |
| 100 canvas->scale(SkDoubleToScalar((0.9*size.fWidth)/bounds.height()), | |
| 101 SkDoubleToScalar((0.9*size.fHeight)/bounds.height())); | |
| 102 } | |
| 103 canvas->translate(-bounds.centerX(), -bounds.centerY()); | |
| 104 } | |
| 105 | |
| 106 | |
| 107 void render_path(SkCanvas* canvas, const SkPath& path) { | |
| 108 canvas->clear(0xFFFFFFFF); | |
| 109 canvas->save(); | |
| 110 | |
| 111 const SkRect& bounds = path.getBounds(); | |
| 112 | |
| 113 xlate_and_scale_to_bounds(canvas, bounds); | |
| 114 | |
| 115 SkPaint p; | |
| 116 p.setColor(SK_ColorBLACK); | |
| 117 p.setStyle(SkPaint::kStroke_Style); | |
| 118 | |
| 119 canvas->drawPath(path, p); | |
| 120 canvas->restore(); | |
| 121 } | |
| 122 | |
| 123 void render_bitmap(SkCanvas* canvas, const SkBitmap& input, const SkRect* srcRec t = NULL) { | |
| 124 const SkISize& size = canvas->getDeviceSize(); | |
| 125 | |
| 126 SkScalar xScale = SkIntToScalar(size.fWidth-2) / input.width(); | |
| 127 SkScalar yScale = SkIntToScalar(size.fHeight-2) / input.height(); | |
| 128 | |
| 129 if (input.width() > input.height()) { | |
| 130 yScale *= input.height() / (float) input.width(); | |
| 131 } else { | |
| 132 xScale *= input.width() / (float) input.height(); | |
| 133 } | |
| 134 | |
| 135 SkRect dst = SkRect::MakeXYWH(SK_Scalar1, SK_Scalar1, | |
| 136 xScale * input.width(), | |
| 137 yScale * input.height()); | |
| 138 | |
| 139 canvas->clear(0xFFFFFFFF); | |
| 140 canvas->drawBitmapRect(input, NULL, dst); | |
| 141 | |
| 142 if (NULL != srcRect) { | |
| 143 SkRect r = SkRect::MakeLTRB(srcRect->fLeft * xScale + SK_Scalar1, | |
| 144 srcRect->fTop * yScale + SK_Scalar1, | |
| 145 srcRect->fRight * xScale + SK_Scalar1, | |
| 146 srcRect->fBottom * yScale + SK_Scalar1); | |
| 147 SkPaint p; | |
| 148 p.setColor(SK_ColorRED); | |
| 149 p.setStyle(SkPaint::kStroke_Style); | |
| 150 | |
| 151 canvas->drawRect(r, p); | |
| 152 } | |
| 153 } | |
| 154 | |
| 155 void render_rrect(SkCanvas* canvas, const SkRRect& rrect) { | |
| 156 canvas->clear(0xFFFFFFFF); | |
| 157 canvas->save(); | |
| 158 | |
| 159 const SkRect& bounds = rrect.getBounds(); | |
| 160 | |
| 161 xlate_and_scale_to_bounds(canvas, bounds); | |
| 162 | |
| 163 SkPaint p; | |
| 164 p.setColor(SK_ColorBLACK); | |
| 165 p.setStyle(SkPaint::kStroke_Style); | |
| 166 | |
| 167 canvas->drawRRect(rrect, p); | |
| 168 canvas->restore(); | |
| 169 } | |
| 170 | |
| 171 }; | |
| 172 | |
| 173 | |
| 174 ClipPath::ClipPath(const SkPath& path, SkRegion::Op op, bool doAA) { | |
| 91 fPath = path; | 175 fPath = path; |
| 92 fOp = op; | 176 fOp = op; |
| 93 fDoAA = doAA; | 177 fDoAA = doAA; |
| 94 fDrawType = CLIP_PATH; | 178 fDrawType = CLIP_PATH; |
| 95 fBitmap = bitmap; | |
| 96 | 179 |
| 97 fInfo.push(SkObjectParser::PathToString(path)); | 180 fInfo.push(SkObjectParser::PathToString(path)); |
| 98 fInfo.push(SkObjectParser::RegionOpToString(op)); | 181 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 99 fInfo.push(SkObjectParser::BoolToString(doAA)); | 182 fInfo.push(SkObjectParser::BoolToString(doAA)); |
| 100 } | 183 } |
| 101 | 184 |
| 102 void ClipPath::execute(SkCanvas* canvas) { | 185 void ClipPath::execute(SkCanvas* canvas) { |
| 103 canvas->clipPath(fPath, fOp, fDoAA); | 186 canvas->clipPath(fPath, fOp, fDoAA); |
| 104 } | 187 } |
| 105 | 188 |
| 106 const SkBitmap* ClipPath::getBitmap() const { | 189 bool ClipPath::render(SkCanvas* canvas) const { |
| 107 return &fBitmap; | 190 render_path(canvas, fPath); |
| 191 return true; | |
| 108 } | 192 } |
| 109 | 193 |
| 110 ClipRegion::ClipRegion(const SkRegion& region, SkRegion::Op op) { | 194 ClipRegion::ClipRegion(const SkRegion& region, SkRegion::Op op) { |
| 111 fRegion = region; | 195 fRegion = region; |
| 112 fOp = op; | 196 fOp = op; |
| 113 fDrawType = CLIP_REGION; | 197 fDrawType = CLIP_REGION; |
| 114 | 198 |
| 115 fInfo.push(SkObjectParser::RegionToString(region)); | 199 fInfo.push(SkObjectParser::RegionToString(region)); |
| 116 fInfo.push(SkObjectParser::RegionOpToString(op)); | 200 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 117 } | 201 } |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 143 | 227 |
| 144 fInfo.push(SkObjectParser::RRectToString(rrect)); | 228 fInfo.push(SkObjectParser::RRectToString(rrect)); |
| 145 fInfo.push(SkObjectParser::RegionOpToString(op)); | 229 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 146 fInfo.push(SkObjectParser::BoolToString(doAA)); | 230 fInfo.push(SkObjectParser::BoolToString(doAA)); |
| 147 } | 231 } |
| 148 | 232 |
| 149 void ClipRRect::execute(SkCanvas* canvas) { | 233 void ClipRRect::execute(SkCanvas* canvas) { |
| 150 canvas->clipRRect(fRRect, fOp, fDoAA); | 234 canvas->clipRRect(fRRect, fOp, fDoAA); |
| 151 } | 235 } |
| 152 | 236 |
| 237 bool ClipRRect::render(SkCanvas* canvas) const { | |
| 238 render_rrect(canvas, fRRect); | |
| 239 return true; | |
| 240 } | |
| 241 | |
| 153 Concat::Concat(const SkMatrix& matrix) { | 242 Concat::Concat(const SkMatrix& matrix) { |
| 154 fMatrix = matrix; | 243 fMatrix = matrix; |
| 155 fDrawType = CONCAT; | 244 fDrawType = CONCAT; |
| 156 | 245 |
| 157 fInfo.push(SkObjectParser::MatrixToString(matrix)); | 246 fInfo.push(SkObjectParser::MatrixToString(matrix)); |
| 158 } | 247 } |
| 159 | 248 |
| 160 void Concat::execute(SkCanvas* canvas) { | 249 void Concat::execute(SkCanvas* canvas) { |
| 161 canvas->concat(fMatrix); | 250 canvas->concat(fMatrix); |
| 162 } | 251 } |
| 163 | 252 |
| 164 DrawBitmap::DrawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, | 253 DrawBitmap::DrawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, |
| 165 const SkPaint* paint, SkBitmap& resizedBitmap) { | 254 const SkPaint* paint) { |
| 166 fBitmap = bitmap; | 255 fBitmap = bitmap; |
| 167 fLeft = left; | 256 fLeft = left; |
| 168 fTop = top; | 257 fTop = top; |
| 169 if (NULL != paint) { | 258 if (NULL != paint) { |
| 170 fPaint = *paint; | 259 fPaint = *paint; |
| 171 fPaintPtr = &fPaint; | 260 fPaintPtr = &fPaint; |
| 172 } else { | 261 } else { |
| 173 fPaintPtr = NULL; | 262 fPaintPtr = NULL; |
| 174 } | 263 } |
| 175 fDrawType = DRAW_BITMAP; | 264 fDrawType = DRAW_BITMAP; |
| 176 fResizedBitmap = resizedBitmap; | |
| 177 | 265 |
| 178 fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 266 fInfo.push(SkObjectParser::BitmapToString(bitmap)); |
| 179 fInfo.push(SkObjectParser::ScalarToString(left, "SkScalar left: ")); | 267 fInfo.push(SkObjectParser::ScalarToString(left, "SkScalar left: ")); |
| 180 fInfo.push(SkObjectParser::ScalarToString(top, "SkScalar top: ")); | 268 fInfo.push(SkObjectParser::ScalarToString(top, "SkScalar top: ")); |
| 181 if (NULL != paint) { | 269 if (NULL != paint) { |
| 182 fInfo.push(SkObjectParser::PaintToString(*paint)); | 270 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 183 } | 271 } |
| 184 } | 272 } |
| 185 | 273 |
| 186 void DrawBitmap::execute(SkCanvas* canvas) { | 274 void DrawBitmap::execute(SkCanvas* canvas) { |
| 187 canvas->drawBitmap(fBitmap, fLeft, fTop, fPaintPtr); | 275 canvas->drawBitmap(fBitmap, fLeft, fTop, fPaintPtr); |
| 188 } | 276 } |
| 189 | 277 |
| 190 const SkBitmap* DrawBitmap::getBitmap() const { | 278 bool DrawBitmap::render(SkCanvas* canvas) const { |
| 191 return &fResizedBitmap; | 279 render_bitmap(canvas, fBitmap); |
| 280 return true; | |
| 192 } | 281 } |
| 193 | 282 |
| 194 DrawBitmapMatrix::DrawBitmapMatrix(const SkBitmap& bitmap, | 283 DrawBitmapMatrix::DrawBitmapMatrix(const SkBitmap& bitmap, |
| 195 const SkMatrix& matrix, | 284 const SkMatrix& matrix, |
| 196 const SkPaint* paint, | 285 const SkPaint* paint) { |
| 197 SkBitmap& resizedBitmap) { | |
| 198 fBitmap = bitmap; | 286 fBitmap = bitmap; |
| 199 fMatrix = matrix; | 287 fMatrix = matrix; |
| 200 if (NULL != paint) { | 288 if (NULL != paint) { |
| 201 fPaint = *paint; | 289 fPaint = *paint; |
| 202 fPaintPtr = &fPaint; | 290 fPaintPtr = &fPaint; |
| 203 } else { | 291 } else { |
| 204 fPaintPtr = NULL; | 292 fPaintPtr = NULL; |
| 205 } | 293 } |
| 206 fDrawType = DRAW_BITMAP_MATRIX; | 294 fDrawType = DRAW_BITMAP_MATRIX; |
| 207 fResizedBitmap = resizedBitmap; | |
| 208 | 295 |
| 209 fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 296 fInfo.push(SkObjectParser::BitmapToString(bitmap)); |
| 210 fInfo.push(SkObjectParser::MatrixToString(matrix)); | 297 fInfo.push(SkObjectParser::MatrixToString(matrix)); |
| 211 if (NULL != paint) { | 298 if (NULL != paint) { |
| 212 fInfo.push(SkObjectParser::PaintToString(*paint)); | 299 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 213 } | 300 } |
| 214 } | 301 } |
| 215 | 302 |
| 216 void DrawBitmapMatrix::execute(SkCanvas* canvas) { | 303 void DrawBitmapMatrix::execute(SkCanvas* canvas) { |
| 217 canvas->drawBitmapMatrix(fBitmap, fMatrix, fPaintPtr); | 304 canvas->drawBitmapMatrix(fBitmap, fMatrix, fPaintPtr); |
| 218 } | 305 } |
| 219 | 306 |
| 220 const SkBitmap* DrawBitmapMatrix::getBitmap() const { | 307 bool DrawBitmapMatrix::render(SkCanvas* canvas) const { |
| 221 return &fResizedBitmap; | 308 render_bitmap(canvas, fBitmap); |
| 309 return true; | |
| 222 } | 310 } |
| 223 | 311 |
| 224 DrawBitmapNine::DrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, | 312 DrawBitmapNine::DrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, |
| 225 const SkRect& dst, const SkPaint* paint, | 313 const SkRect& dst, const SkPaint* paint) { |
| 226 SkBitmap& resizedBitmap) { | |
| 227 fBitmap = bitmap; | 314 fBitmap = bitmap; |
| 228 fCenter = center; | 315 fCenter = center; |
| 229 fDst = dst; | 316 fDst = dst; |
| 230 if (NULL != paint) { | 317 if (NULL != paint) { |
| 231 fPaint = *paint; | 318 fPaint = *paint; |
| 232 fPaintPtr = &fPaint; | 319 fPaintPtr = &fPaint; |
| 233 } else { | 320 } else { |
| 234 fPaintPtr = NULL; | 321 fPaintPtr = NULL; |
| 235 } | 322 } |
| 236 fDrawType = DRAW_BITMAP_NINE; | 323 fDrawType = DRAW_BITMAP_NINE; |
| 237 fResizedBitmap = resizedBitmap; | |
| 238 | 324 |
| 239 fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 325 fInfo.push(SkObjectParser::BitmapToString(bitmap)); |
| 240 fInfo.push(SkObjectParser::IRectToString(center)); | 326 fInfo.push(SkObjectParser::IRectToString(center)); |
| 241 fInfo.push(SkObjectParser::RectToString(dst, "Dst: ")); | 327 fInfo.push(SkObjectParser::RectToString(dst, "Dst: ")); |
| 242 if (NULL != paint) { | 328 if (NULL != paint) { |
| 243 fInfo.push(SkObjectParser::PaintToString(*paint)); | 329 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 244 } | 330 } |
| 245 } | 331 } |
| 246 | 332 |
| 247 void DrawBitmapNine::execute(SkCanvas* canvas) { | 333 void DrawBitmapNine::execute(SkCanvas* canvas) { |
| 248 canvas->drawBitmapNine(fBitmap, fCenter, fDst, fPaintPtr); | 334 canvas->drawBitmapNine(fBitmap, fCenter, fDst, fPaintPtr); |
| 249 } | 335 } |
| 250 | 336 |
| 251 const SkBitmap* DrawBitmapNine::getBitmap() const { | 337 bool DrawBitmapNine::render(SkCanvas* canvas) const { |
| 252 return &fResizedBitmap; | 338 render_bitmap(canvas, fBitmap); |
| 339 return true; | |
| 253 } | 340 } |
| 254 | 341 |
| 255 DrawBitmapRect::DrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, | 342 DrawBitmapRect::DrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, |
| 256 const SkRect& dst, const SkPaint* paint, | 343 const SkRect& dst, const SkPaint* paint) { |
| 257 SkBitmap& resizedBitmap) { | |
| 258 fBitmap = bitmap; | 344 fBitmap = bitmap; |
| 259 if (NULL != src) { | 345 if (NULL != src) { |
| 260 fSrc = *src; | 346 fSrc = *src; |
| 261 } else { | 347 } else { |
| 262 fSrc.setEmpty(); | 348 fSrc.setEmpty(); |
| 263 } | 349 } |
| 264 fDst = dst; | 350 fDst = dst; |
| 265 | 351 |
| 266 if (NULL != paint) { | 352 if (NULL != paint) { |
| 267 fPaint = *paint; | 353 fPaint = *paint; |
| 268 fPaintPtr = &fPaint; | 354 fPaintPtr = &fPaint; |
| 269 } else { | 355 } else { |
| 270 fPaintPtr = NULL; | 356 fPaintPtr = NULL; |
| 271 } | 357 } |
| 272 fDrawType = DRAW_BITMAP_RECT_TO_RECT; | 358 fDrawType = DRAW_BITMAP_RECT_TO_RECT; |
| 273 fResizedBitmap = resizedBitmap; | |
| 274 | 359 |
| 275 fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 360 fInfo.push(SkObjectParser::BitmapToString(bitmap)); |
| 276 if (NULL != src) { | 361 if (NULL != src) { |
| 277 fInfo.push(SkObjectParser::RectToString(*src, "Src: ")); | 362 fInfo.push(SkObjectParser::RectToString(*src, "Src: ")); |
| 278 } | 363 } |
| 279 fInfo.push(SkObjectParser::RectToString(dst, "Dst: ")); | 364 fInfo.push(SkObjectParser::RectToString(dst, "Dst: ")); |
| 280 if (NULL != paint) { | 365 if (NULL != paint) { |
| 281 fInfo.push(SkObjectParser::PaintToString(*paint)); | 366 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 282 } | 367 } |
| 283 } | 368 } |
| 284 | 369 |
| 285 void DrawBitmapRect::execute(SkCanvas* canvas) { | 370 void DrawBitmapRect::execute(SkCanvas* canvas) { |
| 286 canvas->drawBitmapRectToRect(fBitmap, this->srcRect(), fDst, fPaintPtr); | 371 canvas->drawBitmapRectToRect(fBitmap, this->srcRect(), fDst, fPaintPtr); |
| 287 } | 372 } |
| 288 | 373 |
| 289 const SkBitmap* DrawBitmapRect::getBitmap() const { | 374 bool DrawBitmapRect::render(SkCanvas* canvas) const { |
| 290 return &fResizedBitmap; | 375 render_bitmap(canvas, fBitmap, this->srcRect()); |
| 376 return true; | |
| 291 } | 377 } |
| 292 | 378 |
| 293 DrawData::DrawData(const void* data, size_t length) { | 379 DrawData::DrawData(const void* data, size_t length) { |
| 294 fData = new char[length]; | 380 fData = new char[length]; |
| 295 memcpy(fData, data, length); | 381 memcpy(fData, data, length); |
| 296 fLength = length; | 382 fLength = length; |
| 297 fDrawType = DRAW_DATA; | 383 fDrawType = DRAW_DATA; |
| 298 | 384 |
| 299 // TODO: add display of actual data? | 385 // TODO: add display of actual data? |
| 300 SkString* str = new SkString; | 386 SkString* str = new SkString; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 332 fDrawType = DRAW_OVAL; | 418 fDrawType = DRAW_OVAL; |
| 333 | 419 |
| 334 fInfo.push(SkObjectParser::RectToString(oval)); | 420 fInfo.push(SkObjectParser::RectToString(oval)); |
| 335 fInfo.push(SkObjectParser::PaintToString(paint)); | 421 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 336 } | 422 } |
| 337 | 423 |
| 338 void DrawOval::execute(SkCanvas* canvas) { | 424 void DrawOval::execute(SkCanvas* canvas) { |
| 339 canvas->drawOval(fOval, fPaint); | 425 canvas->drawOval(fOval, fPaint); |
| 340 } | 426 } |
| 341 | 427 |
| 428 bool DrawOval::render(SkCanvas* canvas) const { | |
| 429 canvas->clear(0xFFFFFFFF); | |
| 430 canvas->save(); | |
| 431 | |
| 432 xlate_and_scale_to_bounds(canvas, fOval); | |
| 433 | |
| 434 SkPaint p; | |
| 435 p.setColor(SK_ColorBLACK); | |
| 436 p.setStyle(SkPaint::kStroke_Style); | |
| 437 | |
| 438 canvas->drawOval(fOval, p); | |
| 439 canvas->restore(); | |
| 440 | |
| 441 return true; | |
| 442 } | |
| 443 | |
| 342 DrawPaint::DrawPaint(const SkPaint& paint) { | 444 DrawPaint::DrawPaint(const SkPaint& paint) { |
| 343 fPaint = paint; | 445 fPaint = paint; |
| 344 fDrawType = DRAW_PAINT; | 446 fDrawType = DRAW_PAINT; |
| 345 | 447 |
| 346 fInfo.push(SkObjectParser::PaintToString(paint)); | 448 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 347 } | 449 } |
| 348 | 450 |
| 349 void DrawPaint::execute(SkCanvas* canvas) { | 451 void DrawPaint::execute(SkCanvas* canvas) { |
| 350 canvas->drawPaint(fPaint); | 452 canvas->drawPaint(fPaint); |
| 351 } | 453 } |
| 352 | 454 |
| 353 DrawPath::DrawPath(const SkPath& path, const SkPaint& paint, SkBitmap& bitmap) { | 455 bool DrawPaint::render(SkCanvas* canvas) const { |
| 456 canvas->clear(0xFFFFFFFF); | |
| 457 canvas->drawPaint(fPaint); | |
| 458 return true; | |
| 459 } | |
| 460 | |
| 461 DrawPath::DrawPath(const SkPath& path, const SkPaint& paint) { | |
| 354 fPath = path; | 462 fPath = path; |
| 355 fPaint = paint; | 463 fPaint = paint; |
| 356 fBitmap = bitmap; | |
| 357 fDrawType = DRAW_PATH; | 464 fDrawType = DRAW_PATH; |
| 358 | 465 |
| 359 fInfo.push(SkObjectParser::PathToString(path)); | 466 fInfo.push(SkObjectParser::PathToString(path)); |
| 360 fInfo.push(SkObjectParser::PaintToString(paint)); | 467 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 361 } | 468 } |
| 362 | 469 |
| 363 void DrawPath::execute(SkCanvas* canvas) { | 470 void DrawPath::execute(SkCanvas* canvas) { |
| 364 canvas->drawPath(fPath, fPaint); | 471 canvas->drawPath(fPath, fPaint); |
| 365 } | 472 } |
| 366 | 473 |
| 367 const SkBitmap* DrawPath::getBitmap() const { | 474 bool DrawPath::render(SkCanvas* canvas) const { |
| 368 return &fBitmap; | 475 render_path(canvas, fPath); |
| 476 return true; | |
| 369 } | 477 } |
| 370 | 478 |
| 371 DrawPicture::DrawPicture(SkPicture& picture) : | 479 DrawPicture::DrawPicture(SkPicture& picture) : |
| 372 fPicture(picture) { | 480 fPicture(picture) { |
| 373 fDrawType = DRAW_PICTURE; | 481 fDrawType = DRAW_PICTURE; |
| 374 fInfo.push(SkObjectParser::CustomTextToString("To be implemented.")); | 482 fInfo.push(SkObjectParser::CustomTextToString("To be implemented.")); |
| 375 } | 483 } |
| 376 | 484 |
| 377 void DrawPicture::execute(SkCanvas* canvas) { | 485 void DrawPicture::execute(SkCanvas* canvas) { |
| 378 canvas->drawPicture(fPicture); | 486 canvas->drawPicture(fPicture); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 391 fInfo.push(SkObjectParser::ScalarToString(SkIntToScalar((unsigned int)count) , | 499 fInfo.push(SkObjectParser::ScalarToString(SkIntToScalar((unsigned int)count) , |
| 392 "Points: ")); | 500 "Points: ")); |
| 393 fInfo.push(SkObjectParser::PointModeToString(mode)); | 501 fInfo.push(SkObjectParser::PointModeToString(mode)); |
| 394 fInfo.push(SkObjectParser::PaintToString(paint)); | 502 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 395 } | 503 } |
| 396 | 504 |
| 397 void DrawPoints::execute(SkCanvas* canvas) { | 505 void DrawPoints::execute(SkCanvas* canvas) { |
| 398 canvas->drawPoints(fMode, fCount, fPts, fPaint); | 506 canvas->drawPoints(fMode, fCount, fPts, fPaint); |
| 399 } | 507 } |
| 400 | 508 |
| 509 bool DrawPoints::render(SkCanvas* canvas) const { | |
| 510 canvas->clear(0xFFFFFFFF); | |
| 511 canvas->save(); | |
| 512 | |
| 513 SkRect bounds; | |
| 514 | |
| 515 bounds.setEmpty(); | |
| 516 for (unsigned int i = 0; i < fCount; ++i) { | |
| 517 bounds.growToInclude(fPts[i].fX, fPts[i].fY); | |
| 518 } | |
| 519 | |
| 520 xlate_and_scale_to_bounds(canvas, bounds); | |
| 521 | |
| 522 SkPaint p; | |
| 523 p.setColor(SK_ColorBLACK); | |
| 524 p.setStyle(SkPaint::kStroke_Style); | |
| 525 | |
| 526 canvas->drawPoints(fMode, fCount, fPts, p); | |
| 527 canvas->restore(); | |
| 528 | |
| 529 return true; | |
| 530 } | |
| 531 | |
| 401 DrawPosText::DrawPosText(const void* text, size_t byteLength, const SkPoint pos[ ], | 532 DrawPosText::DrawPosText(const void* text, size_t byteLength, const SkPoint pos[ ], |
| 402 const SkPaint& paint) { | 533 const SkPaint& paint) { |
| 403 size_t numPts = paint.countText(text, byteLength); | 534 size_t numPts = paint.countText(text, byteLength); |
| 404 | 535 |
| 405 fText = new char[byteLength]; | 536 fText = new char[byteLength]; |
| 406 memcpy(fText, text, byteLength); | 537 memcpy(fText, text, byteLength); |
| 407 fByteLength = byteLength; | 538 fByteLength = byteLength; |
| 408 | 539 |
| 409 fPos = new SkPoint[numPts]; | 540 fPos = new SkPoint[numPts]; |
| 410 memcpy(fPos, pos, numPts * sizeof(SkPoint)); | 541 memcpy(fPos, pos, numPts * sizeof(SkPoint)); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 468 fDrawType = DRAW_RRECT; | 599 fDrawType = DRAW_RRECT; |
| 469 | 600 |
| 470 fInfo.push(SkObjectParser::RRectToString(rrect)); | 601 fInfo.push(SkObjectParser::RRectToString(rrect)); |
| 471 fInfo.push(SkObjectParser::PaintToString(paint)); | 602 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 472 } | 603 } |
| 473 | 604 |
| 474 void DrawRRect::execute(SkCanvas* canvas) { | 605 void DrawRRect::execute(SkCanvas* canvas) { |
| 475 canvas->drawRRect(fRRect, fPaint); | 606 canvas->drawRRect(fRRect, fPaint); |
| 476 } | 607 } |
| 477 | 608 |
| 609 bool DrawRRect::render(SkCanvas* canvas) const { | |
| 610 render_rrect(canvas, fRRect); | |
| 611 return true; | |
| 612 } | |
| 613 | |
| 478 DrawSprite::DrawSprite(const SkBitmap& bitmap, int left, int top, | 614 DrawSprite::DrawSprite(const SkBitmap& bitmap, int left, int top, |
| 479 const SkPaint* paint, SkBitmap& resizedBitmap) { | 615 const SkPaint* paint) { |
| 480 fBitmap = bitmap; | 616 fBitmap = bitmap; |
| 481 fLeft = left; | 617 fLeft = left; |
| 482 fTop = top; | 618 fTop = top; |
| 483 if (NULL != paint) { | 619 if (NULL != paint) { |
| 484 fPaint = *paint; | 620 fPaint = *paint; |
| 485 fPaintPtr = &fPaint; | 621 fPaintPtr = &fPaint; |
| 486 } else { | 622 } else { |
| 487 fPaintPtr = NULL; | 623 fPaintPtr = NULL; |
| 488 } | 624 } |
| 489 fDrawType = DRAW_SPRITE; | 625 fDrawType = DRAW_SPRITE; |
| 490 fResizedBitmap = resizedBitmap; | |
| 491 | 626 |
| 492 fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 627 fInfo.push(SkObjectParser::BitmapToString(bitmap)); |
| 493 fInfo.push(SkObjectParser::IntToString(left, "Left: ")); | 628 fInfo.push(SkObjectParser::IntToString(left, "Left: ")); |
| 494 fInfo.push(SkObjectParser::IntToString(top, "Top: ")); | 629 fInfo.push(SkObjectParser::IntToString(top, "Top: ")); |
| 495 if (NULL != paint) { | 630 if (NULL != paint) { |
| 496 fInfo.push(SkObjectParser::PaintToString(*paint)); | 631 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 497 } | 632 } |
| 498 } | 633 } |
| 499 | 634 |
| 500 void DrawSprite::execute(SkCanvas* canvas) { | 635 void DrawSprite::execute(SkCanvas* canvas) { |
| 501 canvas->drawSprite(fBitmap, fLeft, fTop, fPaintPtr); | 636 canvas->drawSprite(fBitmap, fLeft, fTop, fPaintPtr); |
| 502 } | 637 } |
| 503 | 638 |
| 504 const SkBitmap* DrawSprite::getBitmap() const { | 639 bool DrawSprite::render(SkCanvas* canvas) const { |
| 505 return &fResizedBitmap; | 640 render_bitmap(canvas, fBitmap); |
| 641 return true; | |
| 506 } | 642 } |
| 507 | 643 |
| 508 DrawTextC::DrawTextC(const void* text, size_t byteLength, SkScalar x, SkScalar y , | 644 DrawTextC::DrawTextC(const void* text, size_t byteLength, SkScalar x, SkScalar y , |
| 509 const SkPaint& paint) { | 645 const SkPaint& paint) { |
| 510 fText = new char[byteLength]; | 646 fText = new char[byteLength]; |
| 511 memcpy(fText, text, byteLength); | 647 memcpy(fText, text, byteLength); |
| 512 fByteLength = byteLength; | 648 fByteLength = byteLength; |
| 513 fX = x; | 649 fX = x; |
| 514 fY = y; | 650 fY = y; |
| 515 fPaint = paint; | 651 fPaint = paint; |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 731 fDy = dy; | 867 fDy = dy; |
| 732 fDrawType = TRANSLATE; | 868 fDrawType = TRANSLATE; |
| 733 | 869 |
| 734 fInfo.push(SkObjectParser::ScalarToString(dx, "SkScalar dx: ")); | 870 fInfo.push(SkObjectParser::ScalarToString(dx, "SkScalar dx: ")); |
| 735 fInfo.push(SkObjectParser::ScalarToString(dy, "SkScalar dy: ")); | 871 fInfo.push(SkObjectParser::ScalarToString(dy, "SkScalar dy: ")); |
| 736 } | 872 } |
| 737 | 873 |
| 738 void Translate::execute(SkCanvas* canvas) { | 874 void Translate::execute(SkCanvas* canvas) { |
| 739 canvas->translate(fDx, fDy); | 875 canvas->translate(fDx, fDy); |
| 740 } | 876 } |
| OLD | NEW |