Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: gm/bitmapscroll.cpp

Issue 1154623002: remove unused SkBitmap::scrollRect API (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | gyp/core.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1
2 /*
3 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8 #include "gm.h"
9
10 namespace skiagm {
11
12 /** Create a bitmap image suitable for testing SkBitmap::scrollRect().
13 *
14 * @param quarterWidth bitmap will be 4x this many pixels wide
15 * @param quarterHeight bitmap will be 4x this many pixels tall
16 * @param bitmap the bitmap data is written into this object
17 */
18 static void make_bitmap(int quarterWidth, int quarterHeight, SkBitmap *bitmap) {
19 SkPaint pRed, pWhite, pGreen, pBlue, pLine, pAlphaGray;
20 pRed.setColor(0xFFFF9999);
21 pWhite.setColor(0xFFFFFFFF);
22 pGreen.setColor(0xFF99FF99);
23 pBlue.setColor(0xFF9999FF);
24 pLine.setColor(0xFF000000);
25 pLine.setStyle(SkPaint::kStroke_Style);
26 pAlphaGray.setColor(0x66888888);
27
28 // Prepare bitmap, and a canvas that draws into it.
29 bitmap->allocN32Pixels(quarterWidth*4, quarterHeight*4);
30 SkCanvas canvas(*bitmap);
31
32 SkScalar w = SkIntToScalar(quarterWidth);
33 SkScalar h = SkIntToScalar(quarterHeight);
34 canvas.drawRectCoords( 0, 0, w*2, h*2, pRed);
35 canvas.drawRectCoords(w*2, 0, w*4, h*2, pGreen);
36 canvas.drawRectCoords( 0, h*2, w*2, h*4, pBlue);
37 canvas.drawRectCoords(w*2, h*2, w*4, h*4, pWhite);
38 canvas.drawRectCoords(w, h, w*3, h*3, pAlphaGray);
39 canvas.drawLine(w*2, 0, w*2, h*4, pLine);
40 canvas.drawLine( 0, h*2, w*4, h*2, pLine);
41 canvas.drawRectCoords(w, h, w*3, h*3, pLine);
42 }
43
44 class BitmapScrollGM : public GM {
45 bool fInited;
46 void init() {
47 if (fInited) {
48 return;
49 }
50 fInited = true;
51 // Create the original bitmap.
52 make_bitmap(quarterWidth, quarterHeight, &origBitmap);
53 }
54
55 public:
56 BitmapScrollGM() {
57 fInited = false;
58 this->setBGColor(0xFFDDDDDD);
59 }
60
61 protected:
62 SkString onShortName() override {
63 return SkString("bitmapscroll");
64 }
65
66 SkISize onISize() override {
67 return SkISize::Make(800, 600);
68 }
69
70 void onDraw(SkCanvas* canvas) override {
71 this->init();
72 SkIRect scrollCenterRegion = SkIRect::MakeXYWH(
73 quarterWidth, quarterHeight, quarterWidth*2+1, quarterHeight*2+1);
74 int x = quarterWidth;
75 int y = quarterHeight;
76 int xSpacing = quarterWidth * 20;
77 int ySpacing = quarterHeight * 16;
78
79 // Draw left-hand text labels.
80 drawLabel(canvas, "scroll entire bitmap",
81 x, y, x, y + ySpacing);
82 drawLabel(canvas, "scroll part of bitmap",
83 x, y + ySpacing, x, y + ySpacing*2);
84 x += 30;
85
86 // Draw various permutations of scrolled bitmaps, scrolling a bit
87 // further each time.
88 draw9(canvas, x, y, NULL, quarterWidth*1/2, quarterHeight*1/2);
89 draw9(canvas, x, y+ySpacing, &scrollCenterRegion,
90 quarterWidth*1/2, quarterHeight*1/2);
91 x += xSpacing;
92 draw9(canvas, x, y, NULL, quarterWidth*3/2, quarterHeight*3/2);
93 draw9(canvas, x, y+ySpacing, &scrollCenterRegion,
94 quarterWidth*3/2, quarterHeight*3/2);
95 x += xSpacing;
96 draw9(canvas, x, y, NULL, quarterWidth*5/2, quarterHeight*5/2);
97 draw9(canvas, x, y+ySpacing, &scrollCenterRegion,
98 quarterWidth*5/2, quarterHeight*5/2);
99 x += xSpacing;
100 draw9(canvas, x, y, NULL, quarterWidth*9/2, quarterHeight*9/2);
101 draw9(canvas, x, y+ySpacing, &scrollCenterRegion,
102 quarterWidth*9/2, quarterHeight*9/2);
103 }
104
105 void drawLabel(SkCanvas* canvas, const char *text, int startX, int startY,
106 int endX, int endY) {
107 SkPaint paint;
108 sk_tool_utils::set_portable_typeface(&paint);
109 paint.setColor(0xFF000000);
110 SkPath path;
111 path.moveTo(SkIntToScalar(startX), SkIntToScalar(startY));
112 path.lineTo(SkIntToScalar(endX), SkIntToScalar(endY));
113 canvas->drawTextOnPath(text, strlen(text), path, NULL, paint);
114 }
115
116 /** Stamp out 9 copies of origBitmap, scrolled in each direction (and
117 * not scrolled at all).
118 */
119 void draw9(SkCanvas* canvas, int x, int y, SkIRect* subset,
120 int scrollX, int scrollY) {
121 for (int yMult=-1; yMult<=1; yMult++) {
122 for (int xMult=-1; xMult<=1; xMult++) {
123 // Figure out the (x,y) to draw this copy at
124 SkScalar bitmapX = SkIntToScalar(
125 x + quarterWidth * 5 * (xMult+1));
126 SkScalar bitmapY = SkIntToScalar(
127 y + quarterHeight * 5 * (yMult+1));
128
129 // Scroll a new copy of the bitmap, and then draw it.
130 // scrollRect() should always return true, even if it's a no-op
131 SkBitmap scrolledBitmap;
132 SkDEBUGCODE(bool copyToReturnValue = )origBitmap.copyTo(
133 &scrolledBitmap, origBitmap.colorType());
134 SkASSERT(copyToReturnValue);
135 SkDEBUGCODE(bool scrollRectReturnValue = )scrolledBitmap.scrollR ect(
136 subset, scrollX * xMult, scrollY * yMult);
137 SkASSERT(scrollRectReturnValue);
138 canvas->drawBitmap(scrolledBitmap, bitmapX, bitmapY);
139 }
140 }
141 }
142
143 private:
144 typedef GM INHERITED;
145 static const int quarterWidth = 10;
146 static const int quarterHeight = 14;
147 SkBitmap origBitmap;
148 };
149
150 //////////////////////////////////////////////////////////////////////////////
151
152 static GM* MyFactory(void*) { return new BitmapScrollGM; }
153 static GMRegistry reg(MyFactory);
154
155 }
OLDNEW
« no previous file with comments | « no previous file | gyp/core.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698