| OLD | NEW |
| 1 #include "SampleCode.h" | 1 #include "SampleCode.h" |
| 2 #include "SkView.h" | 2 #include "SkView.h" |
| 3 #include "SkCanvas.h" | 3 #include "SkCanvas.h" |
| 4 #include "SkGradientShader.h" | 4 #include "SkGradientShader.h" |
| 5 #include "SkGraphics.h" | 5 #include "SkGraphics.h" |
| 6 #include "SkImageDecoder.h" | 6 #include "SkImageDecoder.h" |
| 7 #include "SkPath.h" | 7 #include "SkPath.h" |
| 8 #include "SkRegion.h" | 8 #include "SkRegion.h" |
| 9 #include "SkShader.h" | 9 #include "SkShader.h" |
| 10 #include "SkUtils.h" | 10 #include "SkUtils.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 "1.bmp", "1.gif", "1.jpg", "1.png", | 21 "1.bmp", "1.gif", "1.jpg", "1.png", |
| 22 "2.bmp", "2.gif", "2.jpg", "2.png" | 22 "2.bmp", "2.gif", "2.jpg", "2.png" |
| 23 }; | 23 }; |
| 24 | 24 |
| 25 static bool SetImageRef(SkBitmap* bitmap, SkStream* stream, | 25 static bool SetImageRef(SkBitmap* bitmap, SkStream* stream, |
| 26 SkBitmap::Config pref, const char name[] = NULL) | 26 SkBitmap::Config pref, const char name[] = NULL) |
| 27 { | 27 { |
| 28 if (SkImageDecoder::DecodeStream(stream, bitmap, pref, | 28 if (SkImageDecoder::DecodeStream(stream, bitmap, pref, |
| 29 SkImageDecoder::kDecodeBounds_Mode, NULL)) { | 29 SkImageDecoder::kDecodeBounds_Mode, NULL)) { |
| 30 SkASSERT(bitmap->config() != SkBitmap::kNo_Config); | 30 SkASSERT(bitmap->config() != SkBitmap::kNo_Config); |
| 31 | 31 |
| 32 SkImageRef* ref = new SkImageRef_GlobalPool(stream, bitmap->config()); | 32 SkImageRef* ref = new SkImageRef_GlobalPool(stream, bitmap->config()); |
| 33 ref->setURI(name); | 33 ref->setURI(name); |
| 34 bitmap->setPixelRef(ref)->unref(); | 34 bitmap->setPixelRef(ref)->unref(); |
| 35 return true; | 35 return true; |
| 36 } else { | 36 } else { |
| 37 return false; | 37 return false; |
| 38 } | 38 } |
| 39 } | 39 } |
| 40 | 40 |
| 41 class ImageView : public SkView { | 41 class ImageView : public SkView { |
| 42 public: | 42 public: |
| 43 SkBitmap* fBitmaps; | 43 SkBitmap* fBitmaps; |
| 44 SkShader* fShader; | 44 SkShader* fShader; |
| 45 | 45 |
| 46 ImageView() { | 46 ImageView() { |
| 47 SkImageRef_GlobalPool::SetRAMBudget(32 * 1024); | 47 SkImageRef_GlobalPool::SetRAMBudget(32 * 1024); |
| 48 | 48 |
| 49 int i, N = SK_ARRAY_COUNT(gNames); | 49 int i, N = SK_ARRAY_COUNT(gNames); |
| 50 fBitmaps = new SkBitmap[N]; | 50 fBitmaps = new SkBitmap[N]; |
| 51 | 51 |
| 52 for (i = 0; i < N; i++) { | 52 for (i = 0; i < N; i++) { |
| 53 SkString str("/skimages/"); | 53 SkString str("/skimages/"); |
| 54 str.append(gNames[i]); | 54 str.append(gNames[i]); |
| 55 SkFILEStream* stream = new SkFILEStream(str.c_str()); | 55 SkFILEStream* stream = new SkFILEStream(str.c_str()); |
| 56 | 56 |
| 57 SetImageRef(&fBitmaps[i], stream, SkBitmap::kNo_Config, gNames[i]); | 57 SetImageRef(&fBitmaps[i], stream, SkBitmap::kNo_Config, gNames[i]); |
| 58 if (i & 1) | 58 if (i & 1) |
| 59 fBitmaps[i].buildMipMap(); | 59 fBitmaps[i].buildMipMap(); |
| 60 stream->unref(); | 60 stream->unref(); |
| 61 } | 61 } |
| 62 | 62 |
| 63 fShader = SkShader::CreateBitmapShader(fBitmaps[5], | 63 fShader = SkShader::CreateBitmapShader(fBitmaps[5], |
| 64 SkShader::kRepeat_TileMode, | 64 SkShader::kRepeat_TileMode, |
| 65 SkShader::kRepeat_TileMode); | 65 SkShader::kRepeat_TileMode); |
| 66 | 66 |
| 67 if (true) { | 67 if (true) { |
| 68 SkMatrix m; | 68 SkMatrix m; |
| 69 | 69 |
| 70 m.setRotate(SkIntToScalar(30)); | 70 m.setRotate(SkIntToScalar(30)); |
| 71 fShader->setLocalMatrix(m); | 71 fShader->setLocalMatrix(m); |
| 72 } | 72 } |
| 73 | 73 |
| 74 #if 0 | 74 #if 0 |
| 75 SkImageRef::DumpPool(); | 75 SkImageRef::DumpPool(); |
| 76 for (i = 0; i < N; i++) { | 76 for (i = 0; i < N; i++) { |
| 77 SkBitmap& bm = fBitmaps[i]; | 77 SkBitmap& bm = fBitmaps[i]; |
| 78 | 78 |
| 79 SkDebugf("<%s> addr=%p", gNames[i], bm.getPixels()); | 79 SkDebugf("<%s> addr=%p", gNames[i], bm.getPixels()); |
| 80 bool success = bm.lockPixels(); | 80 bool success = bm.lockPixels(); |
| 81 SkDebugf(" addr=%d", bm.getPixels()); | 81 SkDebugf(" addr=%d", bm.getPixels()); |
| 82 if (success) | 82 if (success) |
| 83 bm.unlockPixels(); | 83 bm.unlockPixels(); |
| 84 SkDebugf(" addr=%p", bm.getPixels()); | 84 SkDebugf(" addr=%p", bm.getPixels()); |
| 85 success = bm.lockPixels(); | 85 success = bm.lockPixels(); |
| 86 SkDebugf(" addr=%d", bm.getPixels()); | 86 SkDebugf(" addr=%d", bm.getPixels()); |
| 87 if (success) | 87 if (success) |
| 88 bm.unlockPixels(); | 88 bm.unlockPixels(); |
| 89 SkDebugf("\n"); | 89 SkDebugf("\n"); |
| 90 } | 90 } |
| 91 SkImageRef::DumpPool(); | 91 SkImageRef::DumpPool(); |
| 92 #endif | 92 #endif |
| 93 } | 93 } |
| 94 | 94 |
| 95 virtual ~ImageView() { | 95 virtual ~ImageView() { |
| 96 delete[] fBitmaps; | 96 delete[] fBitmaps; |
| 97 delete fShader; | 97 delete fShader; |
| 98 | 98 |
| 99 SkImageRef_GlobalPool::DumpPool(); | 99 SkImageRef_GlobalPool::DumpPool(); |
| 100 } | 100 } |
| 101 | 101 |
| 102 protected: | 102 protected: |
| 103 // overrides from SkEventSink | 103 // overrides from SkEventSink |
| 104 virtual bool onQuery(SkEvent* evt) { | 104 virtual bool onQuery(SkEvent* evt) { |
| 105 if (SampleCode::TitleQ(*evt)) { | 105 if (SampleCode::TitleQ(*evt)) { |
| 106 SampleCode::TitleR(evt, "Image"); | 106 SampleCode::TitleR(evt, "Image"); |
| 107 return true; | 107 return true; |
| 108 } | 108 } |
| 109 return this->INHERITED::onQuery(evt); | 109 return this->INHERITED::onQuery(evt); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void drawBG(SkCanvas* canvas) { | 112 void drawBG(SkCanvas* canvas) { |
| 113 canvas->drawColor(0xFFDDDDDD); | 113 canvas->drawColor(0xFFDDDDDD); |
| 114 // canvas->drawColor(SK_ColorWHITE); | 114 // canvas->drawColor(SK_ColorWHITE); |
| 115 } | 115 } |
| 116 | 116 |
| 117 virtual void onDraw(SkCanvas* canvas) { | 117 virtual void onDraw(SkCanvas* canvas) { |
| 118 this->drawBG(canvas); | 118 this->drawBG(canvas); |
| 119 | 119 |
| 120 canvas->translate(SkIntToScalar(10), SkIntToScalar(10)); | 120 canvas->translate(SkIntToScalar(10), SkIntToScalar(10)); |
| 121 | 121 |
| 122 SkScalar x = 0, y = 0; | 122 SkScalar x = 0, y = 0; |
| 123 | 123 |
| 124 for (size_t i = 0; i < SK_ARRAY_COUNT(gNames); i++) { | 124 for (size_t i = 0; i < SK_ARRAY_COUNT(gNames); i++) { |
| 125 canvas->drawBitmap(fBitmaps[i], x, y); | 125 canvas->drawBitmap(fBitmaps[i], x, y); |
| 126 x += SkIntToScalar(fBitmaps[i].width() + 10); | 126 x += SkIntToScalar(fBitmaps[i].width() + 10); |
| 127 } | 127 } |
| 128 | 128 |
| 129 canvas->translate(0, SkIntToScalar(120)); | 129 canvas->translate(0, SkIntToScalar(120)); |
| 130 | 130 |
| 131 SkPaint paint; | 131 SkPaint paint; |
| 132 paint.setShader(fShader); | 132 paint.setShader(fShader); |
| 133 paint.setFilterBitmap(true); | 133 paint.setFilterBitmap(true); |
| 134 SkRect r = { 0, 0, SkIntToScalar(300), SkIntToScalar(100) }; | 134 SkRect r = { 0, 0, SkIntToScalar(300), SkIntToScalar(100) }; |
| 135 | 135 |
| 136 canvas->drawRect(r, paint); | 136 canvas->drawRect(r, paint); |
| 137 } | 137 } |
| 138 | 138 |
| 139 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { | 139 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { |
| 140 this->inval(NULL); | 140 this->inval(NULL); |
| 141 return this->INHERITED::onFindClickHandler(x, y); | 141 return this->INHERITED::onFindClickHandler(x, y); |
| 142 } | 142 } |
| 143 | 143 |
| 144 virtual bool onClick(Click* click) { | 144 virtual bool onClick(Click* click) { |
| 145 return this->INHERITED::onClick(click); | 145 return this->INHERITED::onClick(click); |
| 146 } | 146 } |
| 147 | 147 |
| 148 private: | 148 private: |
| 149 typedef SkView INHERITED; | 149 typedef SkView INHERITED; |
| 150 }; | 150 }; |
| 151 | 151 |
| 152 ////////////////////////////////////////////////////////////////////////////// | 152 ////////////////////////////////////////////////////////////////////////////// |
| 153 | 153 |
| 154 static SkView* MyFactory() { return new ImageView; } | 154 static SkView* MyFactory() { return new ImageView; } |
| 155 static SkViewRegister reg(MyFactory); | 155 static SkViewRegister reg(MyFactory); |
| 156 | 156 |
| OLD | NEW |