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

Unified Diff: samplecode/SampleEncode.cpp

Issue 132513003: SampleApp Cleanup (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: final rebase Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « samplecode/SampleDitherBitmap.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: samplecode/SampleEncode.cpp
diff --git a/samplecode/SampleEncode.cpp b/samplecode/SampleEncode.cpp
index 594c2a1644a9c9d22bb8db866359d76393199310..45666a3b06e92ede94efcf8ccbb39a9fb4e1ee5b 100644
--- a/samplecode/SampleEncode.cpp
+++ b/samplecode/SampleEncode.cpp
@@ -8,6 +8,8 @@
#include "SampleCode.h"
#include "SkView.h"
#include "SkCanvas.h"
+#include "SkData.h"
+#include "SkDecodingImageGenerator.h"
#include "SkGradientShader.h"
#include "SkGraphics.h"
#include "SkImageDecoder.h"
@@ -103,44 +105,43 @@ static const char* const gExt[] = {
".jpg", ".png"
};
-static const char* gPath = "/encoded/";
-
-static void make_name(SkString* name, int config, int ext) {
- name->set(gPath);
- name->append(gConfigLabels[config]);
- name->append(gExt[ext]);
-}
-
#include <sys/stat.h>
class EncodeView : public SampleView {
public:
- SkBitmap* fBitmaps;
- size_t fBitmapCount;
+ SkBitmap* fBitmaps;
+ SkAutoDataUnref* fEncodedPNGs;
+ SkAutoDataUnref* fEncodedJPEGs;
+ size_t fBitmapCount;
EncodeView() {
#if 1
- (void)mkdir(gPath, S_IRWXU | S_IRWXG | S_IRWXO);
-
fBitmapCount = SK_ARRAY_COUNT(gConfigs);
fBitmaps = new SkBitmap[fBitmapCount];
+ fEncodedPNGs = new SkAutoDataUnref[fBitmapCount];
+ fEncodedJPEGs = new SkAutoDataUnref[fBitmapCount];
for (size_t i = 0; i < fBitmapCount; i++) {
make_image(&fBitmaps[i], gConfigs[i], i);
- for (size_t j = 0; j < SK_ARRAY_COUNT(gExt); j++) {
- SkString path;
- make_name(&path, i, j);
-
- // remove any previous run of this file
- remove(path.c_str());
-
- SkImageEncoder* codec = SkImageEncoder::Create(gTypes[j]);
- if (NULL == codec ||
- !codec->encodeFile(path.c_str(), fBitmaps[i], 100)) {
- SkDebugf("------ failed to encode %s\n", path.c_str());
- remove(path.c_str()); // remove any partial file
+ for (size_t j = 0; j < SK_ARRAY_COUNT(gTypes); j++) {
+ SkAutoTDelete<SkImageEncoder> codec(
+ SkImageEncoder::Create(gTypes[j]));
+ if (NULL == 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 (NULL == 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());
}
- delete codec;
}
}
#else
@@ -152,6 +153,8 @@ public:
virtual ~EncodeView() {
delete[] fBitmaps;
+ delete[] fEncodedPNGs;
+ delete[] fEncodedJPEGs;
}
protected:
@@ -187,16 +190,26 @@ protected:
canvas->drawBitmap(fBitmaps[i], x, y);
SkScalar yy = y;
- for (size_t j = 0; j < SK_ARRAY_COUNT(gExt); j++) {
+ for (size_t j = 0; j < SK_ARRAY_COUNT(gTypes); j++) {
yy += SkIntToScalar(fBitmaps[i].height() + 10);
SkBitmap bm;
- SkString name;
-
- make_name(&name, i, j);
-
- SkImageDecoder::DecodeFile(name.c_str(), &bm);
- canvas->drawBitmap(bm, x, yy);
+ SkData* encoded = NULL;
+ 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(
+ SkDecodingImageGenerator::Create(encoded,
+ SkDecodingImageGenerator::Options()),
+ &bm, NULL)) {
+ 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);
« no previous file with comments | « samplecode/SampleDitherBitmap.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698