Index: samplecode/SampleEncode.cpp |
diff --git a/samplecode/SampleEncode.cpp b/samplecode/SampleEncode.cpp |
deleted file mode 100644 |
index 9ca7d8ae462d76b1fff3c98c982a51b8722bf61c..0000000000000000000000000000000000000000 |
--- a/samplecode/SampleEncode.cpp |
+++ /dev/null |
@@ -1,233 +0,0 @@ |
- |
-/* |
- * Copyright 2011 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
-#include "SampleCode.h" |
-#include "SkView.h" |
-#include "SkCanvas.h" |
-#include "SkData.h" |
-#include "SkImageGenerator.h" |
-#include "SkGradientShader.h" |
-#include "SkGraphics.h" |
-#include "SkImageDecoder.h" |
-#include "SkImageEncoder.h" |
-#include "SkPath.h" |
-#include "SkRegion.h" |
-#include "SkShader.h" |
-#include "SkUtils.h" |
-#include "SkXfermode.h" |
-#include "SkColorPriv.h" |
-#include "SkColorFilter.h" |
-#include "SkTime.h" |
-#include "SkTypeface.h" |
- |
-#include "SkStream.h" |
- |
-static void make_image(SkBitmap* bm, SkColorType ct, int configIndex) { |
- const int width = 98; |
- const int height = 100; |
- const SkImageInfo info = SkImageInfo::Make(width, height, ct, kPremul_SkAlphaType); |
- |
- SkBitmap device; |
- device.allocN32Pixels(width, height); |
- SkCanvas canvas(device); |
- SkPaint paint; |
- |
- paint.setAntiAlias(true); |
- canvas.drawColor(SK_ColorRED); |
- paint.setColor(SK_ColorBLUE); |
- canvas.drawCircle(SkIntToScalar(width)/2, SkIntToScalar(height)/2, |
- SkIntToScalar(width)/2, paint); |
- |
- switch (ct) { |
- case kN32_SkColorType: |
- bm->swap(device); |
- break; |
- case kRGB_565_SkColorType: { |
- bm->allocPixels(info); |
- for (int y = 0; y < height; y++) { |
- for (int x = 0; x < width; x++) { |
- *bm->getAddr16(x, y) = SkPixel32ToPixel16(*device.getAddr32(x, y)); |
- } |
- } |
- break; |
- } |
- case kIndex_8_SkColorType: { |
- SkPMColor colors[256]; |
- for (int i = 0; i < 256; i++) { |
- if (configIndex & 1) { |
- colors[i] = SkPackARGB32(255-i, 0, 0, 255-i); |
- } else { |
- colors[i] = SkPackARGB32(0xFF, i, 0, 255-i); |
- } |
- } |
- SkColorTable* ctable = new SkColorTable(colors, 256); |
- bm->allocPixels(info, nullptr, ctable); |
- ctable->unref(); |
- for (int y = 0; y < height; y++) { |
- for (int x = 0; x < width; x++) { |
- *bm->getAddr8(x, y) = SkGetPackedR32(*device.getAddr32(x, y)); |
- } |
- } |
- break; |
- } |
- default: |
- SkASSERT(0); |
- } |
-} |
- |
-// configs to build the original bitmap in. Can be at most these 3 |
-static const SkColorType gColorTypes[] = { |
- kN32_SkColorType, |
- kRGB_565_SkColorType, |
- kIndex_8_SkColorType, // opaque |
- kIndex_8_SkColorType // alpha |
-}; |
- |
-static const char* const gConfigLabels[] = { |
- "8888", "565", "Index8", "Index8 alpha" |
-}; |
- |
-// types to encode into. Can be at most these 3. Must match up with gExt[] |
-static const SkImageEncoder::Type gTypes[] = { |
- SkImageEncoder::kJPEG_Type, |
- SkImageEncoder::kPNG_Type |
-}; |
- |
-// must match up with gTypes[] |
-static const char* const gExt[] = { |
- ".jpg", ".png" |
-}; |
- |
-#include <sys/stat.h> |
- |
-class EncodeView : public SampleView { |
-public: |
- SkBitmap* fBitmaps; |
- SkAutoDataUnref* fEncodedPNGs; |
- SkAutoDataUnref* fEncodedJPEGs; |
- int fBitmapCount; |
- |
- EncodeView() { |
- fBitmapCount = SK_ARRAY_COUNT(gColorTypes); |
- fBitmaps = new SkBitmap[fBitmapCount]; |
- fEncodedPNGs = new SkAutoDataUnref[fBitmapCount]; |
- fEncodedJPEGs = new SkAutoDataUnref[fBitmapCount]; |
- for (int i = 0; i < fBitmapCount; i++) { |
- make_image(&fBitmaps[i], gColorTypes[i], i); |
- |
- for (size_t j = 0; j < SK_ARRAY_COUNT(gTypes); j++) { |
- SkAutoTDelete<SkImageEncoder> codec( |
- SkImageEncoder::Create(gTypes[j])); |
- if (nullptr == codec.get()) { |
- SkDebugf("[%s:%d] failed to encode %s%s\n", |
- __FILE__, __LINE__,gConfigLabels[i], gExt[j]); |
- continue; |
- } |
- SkAutoDataUnref data(codec->encodeData(fBitmaps[i], 100)); |
- if (nullptr == data.get()) { |
- SkDebugf("[%s:%d] failed to encode %s%s\n", |
- __FILE__, __LINE__,gConfigLabels[i], gExt[j]); |
- continue; |
- } |
- if (SkImageEncoder::kJPEG_Type == gTypes[j]) { |
- fEncodedJPEGs[i].reset(data.detach()); |
- } else if (SkImageEncoder::kPNG_Type == gTypes[j]) { |
- fEncodedPNGs[i].reset(data.detach()); |
- } |
- } |
- } |
- this->setBGColor(0xFFDDDDDD); |
- } |
- |
- virtual ~EncodeView() { |
- delete[] fBitmaps; |
- delete[] fEncodedPNGs; |
- delete[] fEncodedJPEGs; |
- } |
- |
-protected: |
- // overrides from SkEventSink |
- virtual bool onQuery(SkEvent* evt) { |
- if (SampleCode::TitleQ(*evt)) { |
- SampleCode::TitleR(evt, "ImageEncoder"); |
- return true; |
- } |
- return this->INHERITED::onQuery(evt); |
- } |
- |
- virtual void onDrawContent(SkCanvas* canvas) { |
- if (fBitmapCount == 0) { |
- return; |
- } |
- |
- SkPaint paint; |
- paint.setAntiAlias(true); |
- paint.setTextAlign(SkPaint::kCenter_Align); |
- |
- canvas->translate(SkIntToScalar(10), SkIntToScalar(20)); |
- |
- SkScalar x = 0, y = 0, maxX = 0; |
- const int SPACER = 10; |
- |
- for (int i = 0; i < fBitmapCount; i++) { |
- canvas->drawText(gConfigLabels[i], strlen(gConfigLabels[i]), |
- x + SkIntToScalar(fBitmaps[i].width()) / 2, 0, |
- paint); |
- y = paint.getTextSize(); |
- |
- canvas->drawBitmap(fBitmaps[i], x, y); |
- |
- SkScalar yy = y; |
- for (size_t j = 0; j < SK_ARRAY_COUNT(gTypes); j++) { |
- yy += SkIntToScalar(fBitmaps[i].height() + 10); |
- |
- SkBitmap bm; |
- SkData* encoded = nullptr; |
- if (SkImageEncoder::kJPEG_Type == gTypes[j]) { |
- encoded = fEncodedJPEGs[i].get(); |
- } else if (SkImageEncoder::kPNG_Type == gTypes[j]) { |
- encoded = fEncodedPNGs[i].get(); |
- } |
- if (encoded) { |
- if (!SkInstallDiscardablePixelRef(encoded, &bm)) { |
- SkDebugf("[%s:%d] failed to decode %s%s\n", |
- __FILE__, __LINE__,gConfigLabels[i], gExt[j]); |
- } |
- canvas->drawBitmap(bm, x, yy); |
- } |
- } |
- |
- x += SkIntToScalar(fBitmaps[i].width() + SPACER); |
- if (x > maxX) { |
- maxX = x; |
- } |
- } |
- |
- y = (paint.getTextSize() + SkIntToScalar(fBitmaps[0].height())) * 3 / 2; |
- x = maxX + SkIntToScalar(10); |
- paint.setTextAlign(SkPaint::kLeft_Align); |
- |
- for (size_t j = 0; j < SK_ARRAY_COUNT(gExt); j++) { |
- canvas->drawText(gExt[j], strlen(gExt[j]), x, y, paint); |
- y += SkIntToScalar(fBitmaps[0].height() + SPACER); |
- } |
- } |
- |
- virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, |
- unsigned modi) { |
- this->inval(nullptr); |
- return this->INHERITED::onFindClickHandler(x, y, modi); |
- } |
- |
-private: |
- typedef SampleView INHERITED; |
-}; |
- |
-////////////////////////////////////////////////////////////////////////////// |
- |
-static SkView* MyFactory() { return new EncodeView; } |
-static SkViewRegister reg(MyFactory); |