| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "gm.h" | 8 #include "gm.h" |
| 9 #include "SkSurface.h" | 9 #include "SkSurface.h" |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 ImageGM() { | 113 ImageGM() { |
| 114 fBufferSize = RB * H; | 114 fBufferSize = RB * H; |
| 115 fBuffer = sk_malloc_throw(fBufferSize); | 115 fBuffer = sk_malloc_throw(fBufferSize); |
| 116 fSize.set(SkIntToScalar(W), SkIntToScalar(H)); | 116 fSize.set(SkIntToScalar(W), SkIntToScalar(H)); |
| 117 } | 117 } |
| 118 | 118 |
| 119 virtual ~ImageGM() { | 119 virtual ~ImageGM() { |
| 120 sk_free(fBuffer); | 120 sk_free(fBuffer); |
| 121 } | 121 } |
| 122 | 122 |
| 123 | |
| 124 protected: | 123 protected: |
| 125 virtual SkString onShortName() { | 124 SkString onShortName() SK_OVERRIDE { |
| 126 return SkString("image-surface"); | 125 return SkString("image-surface"); |
| 127 } | 126 } |
| 128 | 127 |
| 129 virtual SkISize onISize() { | 128 SkISize onISize() SK_OVERRIDE { |
| 130 return SkISize::Make(960, 1200); | 129 return SkISize::Make(960, 1200); |
| 131 } | 130 } |
| 132 | 131 |
| 133 virtual void onDraw(SkCanvas* canvas) { | 132 void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| 134 drawJpeg(canvas, this->getISize()); | 133 drawJpeg(canvas, this->getISize()); |
| 135 | 134 |
| 136 canvas->scale(2, 2); | 135 canvas->scale(2, 2); |
| 137 | 136 |
| 138 static const char* kLabel1 = "Original Img"; | 137 static const char* kLabel1 = "Original Img"; |
| 139 static const char* kLabel2 = "Modified Img"; | 138 static const char* kLabel2 = "Modified Img"; |
| 140 static const char* kLabel3 = "Cur Surface"; | 139 static const char* kLabel3 = "Cur Surface"; |
| 141 static const char* kLabel4 = "Full Crop"; | 140 static const char* kLabel4 = "Full Crop"; |
| 142 static const char* kLabel5 = "Over-crop"; | 141 static const char* kLabel5 = "Over-crop"; |
| 143 static const char* kLabel6 = "Upper-left"; | 142 static const char* kLabel6 = "Upper-left"; |
| 144 static const char* kLabel7 = "No Crop"; | 143 static const char* kLabel7 = "No Crop"; |
| 145 | 144 |
| 146 static const char* kLabel8 = "Pre-Alloc Img"; | 145 static const char* kLabel8 = "Pre-Alloc Img"; |
| 147 static const char* kLabel9 = "New Alloc Img"; | 146 static const char* kLabel9 = "New Alloc Img"; |
| 148 static const char* kLabel10 = "Null Paint"; | 147 static const char* kLabel10 = "GPU"; |
| 149 static const char* kLabel11 = "GPU"; | |
| 150 | 148 |
| 151 SkPaint textPaint; | 149 SkPaint textPaint; |
| 152 textPaint.setAntiAlias(true); | 150 textPaint.setAntiAlias(true); |
| 153 sk_tool_utils::set_portable_typeface(&textPaint); | 151 sk_tool_utils::set_portable_typeface(&textPaint); |
| 154 textPaint.setTextSize(8); | 152 textPaint.setTextSize(8); |
| 155 | 153 |
| 156 canvas->drawText(kLabel1, strlen(kLabel1), 10, 60, textPaint); | 154 canvas->drawText(kLabel1, strlen(kLabel1), 10, 60, textPaint); |
| 157 canvas->drawText(kLabel2, strlen(kLabel2), 10, 140, textPaint); | 155 canvas->drawText(kLabel2, strlen(kLabel2), 10, 140, textPaint); |
| 158 canvas->drawText(kLabel3, strlen(kLabel3), 10, 220, textPaint); | 156 canvas->drawText(kLabel3, strlen(kLabel3), 10, 220, textPaint); |
| 159 canvas->drawText(kLabel4, strlen(kLabel4), 10, 300, textPaint); | 157 canvas->drawText(kLabel4, strlen(kLabel4), 10, 300, textPaint); |
| 160 canvas->drawText(kLabel5, strlen(kLabel5), 10, 380, textPaint); | 158 canvas->drawText(kLabel5, strlen(kLabel5), 10, 380, textPaint); |
| 161 canvas->drawText(kLabel6, strlen(kLabel6), 10, 460, textPaint); | 159 canvas->drawText(kLabel6, strlen(kLabel6), 10, 460, textPaint); |
| 162 canvas->drawText(kLabel7, strlen(kLabel7), 10, 540, textPaint); | 160 canvas->drawText(kLabel7, strlen(kLabel7), 10, 540, textPaint); |
| 163 | 161 |
| 164 canvas->drawText(kLabel8, strlen(kLabel8), 80, 10, textPaint); | 162 canvas->drawText(kLabel8, strlen(kLabel8), 80, 10, textPaint); |
| 165 canvas->drawText(kLabel9, strlen(kLabel9), 160, 10, textPaint); | 163 canvas->drawText(kLabel9, strlen(kLabel9), 160, 10, textPaint); |
| 166 canvas->drawText(kLabel10, strlen(kLabel10), 250, 10, textPaint); | 164 canvas->drawText(kLabel10, strlen(kLabel10), 265, 10, textPaint); |
| 167 canvas->drawText(kLabel11, strlen(kLabel11), 320, 10, textPaint); | |
| 168 | 165 |
| 169 canvas->translate(80, 20); | 166 canvas->translate(80, 20); |
| 170 | 167 |
| 171 // since we draw into this directly, we need to start fresh | 168 // since we draw into this directly, we need to start fresh |
| 172 sk_bzero(fBuffer, fBufferSize); | 169 sk_bzero(fBuffer, fBufferSize); |
| 173 | 170 |
| 174 SkImageInfo info = SkImageInfo::MakeN32Premul(W, H); | 171 SkImageInfo info = SkImageInfo::MakeN32Premul(W, H); |
| 175 SkAutoTUnref<SkSurface> surf0(SkSurface::NewRasterDirect(info, fBuffer,
RB)); | 172 SkAutoTUnref<SkSurface> surf0(SkSurface::NewRasterDirect(info, fBuffer,
RB)); |
| 176 SkAutoTUnref<SkSurface> surf1(SkSurface::NewRaster(info)); | 173 SkAutoTUnref<SkSurface> surf1(SkSurface::NewRaster(info)); |
| 174 SkAutoTUnref<SkSurface> surf2; // gpu |
| 175 |
| 177 #if SK_SUPPORT_GPU | 176 #if SK_SUPPORT_GPU |
| 178 GrContext* ctx = canvas->getGrContext(); | 177 surf2.reset(SkSurface::NewRenderTarget(canvas->getGrContext(), |
| 179 | 178 SkSurface::kNo_Budgeted, info)); |
| 180 SkAutoTUnref<SkSurface> surf4(SkSurface::NewRenderTarget( | |
| 181 ctx, SkSurface::kNo_Budgeted, info)); | |
| 182 #endif | 179 #endif |
| 183 | 180 |
| 184 test_surface(canvas, surf0, true); | 181 test_surface(canvas, surf0, true); |
| 185 canvas->translate(80, 0); | 182 canvas->translate(80, 0); |
| 186 test_surface(canvas, surf1, true); | 183 test_surface(canvas, surf1, true); |
| 187 #if SK_SUPPORT_GPU | 184 if (surf2) { |
| 188 if (ctx) { | |
| 189 canvas->translate(80, 0); | 185 canvas->translate(80, 0); |
| 190 test_surface(canvas, surf4, true); | 186 test_surface(canvas, surf2, true); |
| 191 } | 187 } |
| 192 #endif | |
| 193 } | 188 } |
| 194 | 189 |
| 195 uint32_t onGetFlags() const SK_OVERRIDE { | 190 uint32_t onGetFlags() const SK_OVERRIDE { |
| 196 return GM::kSkipPicture_Flag | GM::kSkipPipe_Flag; | 191 return GM::kSkipPicture_Flag | GM::kSkipPipe_Flag; |
| 197 } | 192 } |
| 198 | 193 |
| 199 private: | 194 private: |
| 200 typedef skiagm::GM INHERITED; | 195 typedef skiagm::GM INHERITED; |
| 201 }; | 196 }; |
| 197 DEF_GM( return new ImageGM; ) |
| 202 | 198 |
| 203 ////////////////////////////////////////////////////////////////////////////// | |
| 204 | |
| 205 static skiagm::GM* MyFactory(void*) { return new ImageGM; } | |
| 206 static skiagm::GMRegistry reg(MyFactory); | |
| OLD | NEW |