| 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 "Sk64.h" | 4 #include "Sk64.h" |
| 5 #include "SkGradientShader.h" | 5 #include "SkGradientShader.h" |
| 6 #include "SkGraphics.h" | 6 #include "SkGraphics.h" |
| 7 #include "SkImageDecoder.h" | 7 #include "SkImageDecoder.h" |
| 8 #include "SkKernel33MaskFilter.h" | 8 #include "SkKernel33MaskFilter.h" |
| 9 #include "SkPath.h" | 9 #include "SkPath.h" |
| 10 #include "SkPicture.h" | 10 #include "SkPicture.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 paint); | 30 paint); |
| 31 } | 31 } |
| 32 | 32 |
| 33 class PictureView : public SkView { | 33 class PictureView : public SkView { |
| 34 public: | 34 public: |
| 35 PictureView() { | 35 PictureView() { |
| 36 fPicture = new SkPicture; | 36 fPicture = new SkPicture; |
| 37 SkCanvas* canvas = fPicture->beginRecording(100, 100); | 37 SkCanvas* canvas = fPicture->beginRecording(100, 100); |
| 38 SkPaint paint; | 38 SkPaint paint; |
| 39 paint.setAntiAlias(true); | 39 paint.setAntiAlias(true); |
| 40 | 40 |
| 41 drawCircle(canvas, 50, SK_ColorBLACK); | 41 drawCircle(canvas, 50, SK_ColorBLACK); |
| 42 fSubPicture = new SkPicture; | 42 fSubPicture = new SkPicture; |
| 43 canvas->drawPicture(*fSubPicture); | 43 canvas->drawPicture(*fSubPicture); |
| 44 canvas->translate(SkIntToScalar(50), 0); | 44 canvas->translate(SkIntToScalar(50), 0); |
| 45 canvas->drawPicture(*fSubPicture); | 45 canvas->drawPicture(*fSubPicture); |
| 46 canvas->translate(0, SkIntToScalar(50)); | 46 canvas->translate(0, SkIntToScalar(50)); |
| 47 canvas->drawPicture(*fSubPicture); | 47 canvas->drawPicture(*fSubPicture); |
| 48 canvas->translate(SkIntToScalar(-50), 0); | 48 canvas->translate(SkIntToScalar(-50), 0); |
| 49 canvas->drawPicture(*fSubPicture); | 49 canvas->drawPicture(*fSubPicture); |
| 50 // fPicture now has (4) references to us. We can release ours, and just | 50 // fPicture now has (4) references to us. We can release ours, and just |
| 51 // unref fPicture in our destructor, and it will in turn take care of | 51 // unref fPicture in our destructor, and it will in turn take care of |
| 52 // the other references to fSubPicture | 52 // the other references to fSubPicture |
| 53 fSubPicture->unref(); | 53 fSubPicture->unref(); |
| 54 } | 54 } |
| 55 | 55 |
| 56 virtual ~PictureView() { | 56 virtual ~PictureView() { |
| 57 fPicture->unref(); | 57 fPicture->unref(); |
| 58 } | 58 } |
| 59 | 59 |
| 60 protected: | 60 protected: |
| 61 // overrides from SkEventSink | 61 // overrides from SkEventSink |
| 62 virtual bool onQuery(SkEvent* evt) { | 62 virtual bool onQuery(SkEvent* evt) { |
| 63 if (SampleCode::TitleQ(*evt)) { | 63 if (SampleCode::TitleQ(*evt)) { |
| 64 SampleCode::TitleR(evt, "Picture"); | 64 SampleCode::TitleR(evt, "Picture"); |
| 65 return true; | 65 return true; |
| 66 } | 66 } |
| 67 return this->INHERITED::onQuery(evt); | 67 return this->INHERITED::onQuery(evt); |
| 68 } | 68 } |
| 69 | 69 |
| 70 void drawBG(SkCanvas* canvas) { | 70 void drawBG(SkCanvas* canvas) { |
| 71 // canvas->drawColor(0xFFDDDDDD); | 71 // canvas->drawColor(0xFFDDDDDD); |
| 72 canvas->drawColor(SK_ColorWHITE); | 72 canvas->drawColor(SK_ColorWHITE); |
| 73 // canvas->drawColor(SK_ColorBLACK); | 73 // canvas->drawColor(SK_ColorBLACK); |
| 74 } | 74 } |
| 75 | 75 |
| 76 void drawSomething(SkCanvas* canvas) { | 76 void drawSomething(SkCanvas* canvas) { |
| 77 SkPaint paint; | 77 SkPaint paint; |
| 78 | 78 |
| 79 paint.setAntiAlias(true); | 79 paint.setAntiAlias(true); |
| 80 | 80 |
| 81 paint.setColor(SK_ColorRED); | 81 paint.setColor(SK_ColorRED); |
| 82 canvas->drawCircle(SkIntToScalar(50), SkIntToScalar(50), | 82 canvas->drawCircle(SkIntToScalar(50), SkIntToScalar(50), |
| 83 SkIntToScalar(40), paint); | 83 SkIntToScalar(40), paint); |
| 84 paint.setColor(SK_ColorBLACK); | 84 paint.setColor(SK_ColorBLACK); |
| 85 paint.setTextSize(SkIntToScalar(40)); | 85 paint.setTextSize(SkIntToScalar(40)); |
| 86 canvas->drawText("Picture", 7, SkIntToScalar(50), SkIntToScalar(62), | 86 canvas->drawText("Picture", 7, SkIntToScalar(50), SkIntToScalar(62), |
| 87 paint); | 87 paint); |
| 88 } | 88 } |
| 89 | 89 |
| 90 virtual void onDraw(SkCanvas* canvas) { | 90 virtual void onDraw(SkCanvas* canvas) { |
| 91 this->drawBG(canvas); | 91 this->drawBG(canvas); |
| 92 | 92 |
| 93 drawSomething(canvas); | 93 drawSomething(canvas); |
| 94 | 94 |
| 95 SkPicture* pict = new SkPicture; | 95 SkPicture* pict = new SkPicture; |
| 96 SkAutoUnref aur(pict); | 96 SkAutoUnref aur(pict); |
| 97 | 97 |
| 98 drawSomething(pict->beginRecording(100, 100)); | 98 drawSomething(pict->beginRecording(100, 100)); |
| 99 pict->endRecording(); | 99 pict->endRecording(); |
| 100 | 100 |
| 101 canvas->save(); | 101 canvas->save(); |
| 102 canvas->translate(SkIntToScalar(300), SkIntToScalar(50)); | 102 canvas->translate(SkIntToScalar(300), SkIntToScalar(50)); |
| 103 canvas->scale(-SK_Scalar1, -SK_Scalar1); | 103 canvas->scale(-SK_Scalar1, -SK_Scalar1); |
| 104 canvas->translate(-SkIntToScalar(100), -SkIntToScalar(50)); | 104 canvas->translate(-SkIntToScalar(100), -SkIntToScalar(50)); |
| 105 canvas->drawPicture(*pict); | 105 canvas->drawPicture(*pict); |
| 106 canvas->restore(); | 106 canvas->restore(); |
| 107 | 107 |
| 108 canvas->save(); | 108 canvas->save(); |
| 109 canvas->translate(SkIntToScalar(200), SkIntToScalar(150)); | 109 canvas->translate(SkIntToScalar(200), SkIntToScalar(150)); |
| 110 canvas->scale(SK_Scalar1, -SK_Scalar1); | 110 canvas->scale(SK_Scalar1, -SK_Scalar1); |
| 111 canvas->translate(0, -SkIntToScalar(50)); | 111 canvas->translate(0, -SkIntToScalar(50)); |
| 112 canvas->drawPicture(*pict); | 112 canvas->drawPicture(*pict); |
| 113 canvas->restore(); | 113 canvas->restore(); |
| 114 | 114 |
| 115 canvas->save(); | 115 canvas->save(); |
| 116 canvas->translate(SkIntToScalar(100), SkIntToScalar(100)); | 116 canvas->translate(SkIntToScalar(100), SkIntToScalar(100)); |
| 117 canvas->scale(-SK_Scalar1, SK_Scalar1); | 117 canvas->scale(-SK_Scalar1, SK_Scalar1); |
| 118 canvas->translate(-SkIntToScalar(100), 0); | 118 canvas->translate(-SkIntToScalar(100), 0); |
| 119 canvas->drawPicture(*pict); | 119 canvas->drawPicture(*pict); |
| 120 canvas->restore(); | 120 canvas->restore(); |
| 121 | 121 |
| 122 // test that we can re-record a subpicture, and see the results | 122 // test that we can re-record a subpicture, and see the results |
| 123 | 123 |
| 124 canvas->translate(SkIntToScalar(10), SkIntToScalar(250)); | 124 canvas->translate(SkIntToScalar(10), SkIntToScalar(250)); |
| 125 drawCircle(fSubPicture->beginRecording(50, 50), 25, | 125 drawCircle(fSubPicture->beginRecording(50, 50), 25, |
| 126 fRand.nextU() | 0xFF000000); | 126 fRand.nextU() | 0xFF000000); |
| 127 canvas->drawPicture(*fPicture); | 127 canvas->drawPicture(*fPicture); |
| 128 delayInval(500); | 128 delayInval(500); |
| 129 } | 129 } |
| 130 | 130 |
| 131 private: | 131 private: |
| 132 #define INVAL_ALL_TYPE "inval-all" | 132 #define INVAL_ALL_TYPE "inval-all" |
| 133 | 133 |
| 134 void delayInval(SkMSec delay) { | 134 void delayInval(SkMSec delay) { |
| 135 (new SkEvent(INVAL_ALL_TYPE))->post(this->getSinkID(), delay); | 135 (new SkEvent(INVAL_ALL_TYPE))->post(this->getSinkID(), delay); |
| 136 } | 136 } |
| 137 | 137 |
| 138 virtual bool onEvent(const SkEvent& evt) { | 138 virtual bool onEvent(const SkEvent& evt) { |
| 139 if (evt.isType(INVAL_ALL_TYPE)) { | 139 if (evt.isType(INVAL_ALL_TYPE)) { |
| 140 this->inval(NULL); | 140 this->inval(NULL); |
| 141 return true; | 141 return true; |
| 142 } | 142 } |
| 143 return this->INHERITED::onEvent(evt); | 143 return this->INHERITED::onEvent(evt); |
| 144 } | 144 } |
| 145 | 145 |
| 146 SkPicture* fPicture; | 146 SkPicture* fPicture; |
| 147 SkPicture* fSubPicture; | 147 SkPicture* fSubPicture; |
| 148 SkRandom fRand; | 148 SkRandom fRand; |
| 149 | 149 |
| 150 typedef SkView INHERITED; | 150 typedef SkView INHERITED; |
| 151 }; | 151 }; |
| 152 | 152 |
| 153 ////////////////////////////////////////////////////////////////////////////// | 153 ////////////////////////////////////////////////////////////////////////////// |
| 154 | 154 |
| 155 static SkView* MyFactory() { return new PictureView; } | 155 static SkView* MyFactory() { return new PictureView; } |
| 156 static SkViewRegister reg(MyFactory); | 156 static SkViewRegister reg(MyFactory); |
| 157 | 157 |
| OLD | NEW |