本文整理汇总了C++中SkPictureRecorder::DEPRECATED_beginRecording方法的典型用法代码示例。如果您正苦于以下问题:C++ SkPictureRecorder::DEPRECATED_beginRecording方法的具体用法?C++ SkPictureRecorder::DEPRECATED_beginRecording怎么用?C++ SkPictureRecorder::DEPRECATED_beginRecording使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SkPictureRecorder
的用法示例。
在下文中一共展示了SkPictureRecorder::DEPRECATED_beginRecording方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
// construct the pattern removed by the SkPictureRecord::remove_save_layer1
// optimization, i.e.:
// SAVE_LAYER
// DRAW_BITMAP|DRAW_BITMAP_MATRIX|DRAW_BITMAP_NINE|DRAW_BITMAP_RECT_TO_RECT
// RESTORE
//
// saveLayerHasPaint - control if the saveLayer has a paint (the optimization
// takes a different path if this is false)
// dbmr2rHasPaint - control if the dbmr2r has a paint (the optimization
// takes a different path if this is false)
// colorsMatch - control if the saveLayer and dbmr2r paint colors
// match (the optimization will fail if they do not)
static SkPicture* create_save_layer_opt_1(SkTDArray<DrawType>* preOptPattern,
SkTDArray<DrawType>* postOptPattern,
const SkBitmap& checkerBoard,
bool saveLayerHasPaint,
bool dbmr2rHasPaint,
bool colorsMatch) {
// Create the pattern that should trigger the optimization
preOptPattern->setCount(5);
(*preOptPattern)[0] = SAVE;
(*preOptPattern)[1] = SAVE_LAYER;
(*preOptPattern)[2] = DRAW_BITMAP_RECT_TO_RECT;
(*preOptPattern)[3] = RESTORE;
(*preOptPattern)[4] = RESTORE;
if (colorsMatch) {
// Create the pattern that should appear after the optimization
postOptPattern->setCount(5);
(*postOptPattern)[0] = SAVE; // extra save/restore added by extra draw
(*postOptPattern)[1] = SAVE;
(*postOptPattern)[2] = DRAW_BITMAP_RECT_TO_RECT;
(*postOptPattern)[3] = RESTORE;
(*postOptPattern)[4] = RESTORE;
} else {
// Create the pattern that appears if the optimization doesn't fire
postOptPattern->setCount(7);
(*postOptPattern)[0] = SAVE; // extra save/restore added by extra draw
(*postOptPattern)[1] = SAVE;
(*postOptPattern)[2] = SAVE_LAYER;
(*postOptPattern)[3] = DRAW_BITMAP_RECT_TO_RECT;
(*postOptPattern)[4] = RESTORE;
(*postOptPattern)[5] = RESTORE;
(*postOptPattern)[6] = RESTORE;
}
SkPictureRecorder recorder;
SkCanvas* canvas = recorder.DEPRECATED_beginRecording(100, 100, NULL, 0);
// have to disable the optimizations while generating the picture
recorder.internalOnly_EnableOpts(false);
SkPaint saveLayerPaint;
saveLayerPaint.setColor(0xCC000000);
// saveLayer's 'bounds' parameter must be NULL for this optimization
if (saveLayerHasPaint) {
canvas->saveLayer(NULL, &saveLayerPaint);
} else {
canvas->saveLayer(NULL, NULL);
}
SkRect rect = { 10, 10, 90, 90 };
// The dbmr2r's paint must be opaque
SkPaint dbmr2rPaint;
if (colorsMatch) {
dbmr2rPaint.setColor(0xFF000000);
} else {
dbmr2rPaint.setColor(0xFFFF0000);
}
if (dbmr2rHasPaint) {
canvas->drawBitmapRectToRect(checkerBoard, NULL, rect, &dbmr2rPaint);
} else {
canvas->drawBitmapRectToRect(checkerBoard, NULL, rect, NULL);
}
canvas->restore();
return recorder.endRecording();
}
示例2: onDraw
virtual void onDraw(SkCanvas* canvas) {
PFCreateOpt gOpts[] = {
create_save_layer_opt_1_v1,
create_save_layer_opt_1_v2,
create_save_layer_opt_1_v3,
create_save_layer_opt_1_v4,
create_save_layer_opt_2_v1,
create_save_layer_opt_2_v2,
create_save_layer_opt_2_v3,
create_save_layer_opt_2_v4,
};
SkTDArray<DrawType> prePattern, postPattern;
SkScalar xPos = 0, yPos = 0;
for (size_t i = 0; i < SK_ARRAY_COUNT(gOpts); ++i) {
SkAutoTUnref<SkPicture> pre((*gOpts[i])(&prePattern, &postPattern, fCheckerboard));
if (!(check_pattern(*pre, prePattern))) {
WARN("Pre optimization pattern mismatch");
SkASSERT(0);
}
canvas->save();
canvas->translate(xPos, yPos);
pre->draw(canvas);
xPos += pre->cullRect().width();
canvas->restore();
// re-render the 'pre' picture and thus 'apply' the optimization
SkPictureRecorder recorder;
SkCanvas* recordCanvas =
recorder.DEPRECATED_beginRecording(pre->cullRect().width(),
pre->cullRect().height(),
NULL, 0);
pre->draw(recordCanvas);
SkAutoTUnref<SkPicture> post(recorder.endRecording());
if (!(check_pattern(*post, postPattern))) {
WARN("Post optimization pattern mismatch");
SkASSERT(0);
}
canvas->save();
canvas->translate(xPos, yPos);
post->draw(canvas);
xPos += post->cullRect().width();
canvas->restore();
if (xPos >= kWidth) {
// start a new line
xPos = 0;
yPos += post->cullRect().height();
}
// TODO: we could also render the pre and post pictures to bitmaps
// and manually compare them in this method
}
}