separate image encode and decode
authorreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 6 Jan 2009 20:16:26 +0000 (20:16 +0000)
committerreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 6 Jan 2009 20:16:26 +0000 (20:16 +0000)
remove obsolete build-flag for encode

git-svn-id: http://skia.googlecode.com/svn/trunk@56 2bbb7eff-a529-9590-31e7-b0007b416f81

18 files changed:
include/core/SkPreConfig.h
include/images/SkImageDecoder.h
include/images/SkImageEncoder.h [new file with mode: 0644]
samplecode/SampleApp.cpp
samplecode/SampleEncode.cpp
samplecode/SampleRegion.cpp
src/animator/SkSnapshot.cpp
src/animator/SkSnapshot.h
src/images/SkImageDecoder.cpp
src/images/SkImageDecoder_libjpeg.cpp
src/images/SkImageDecoder_libpng.cpp
src/images/SkImageEncoder.cpp [new file with mode: 0644]
src/ports/SkImageDecoder_CG.cpp
src/ports/SkImageDecoder_Factory.cpp
src/ports/SkImageDecoder_empty.cpp
src/ports/SkImageEncoder_Factory.cpp [new file with mode: 0644]
src/xml/SkJSDisplayable.cpp
xcode/maccore/maccore.xcodeproj/project.pbxproj

index 04f1987..b8c91b2 100644 (file)
 //////////////////////////////////////////////////////////////////////
 // Conditional features based on build target
 
-#if defined(SK_BUILD_FOR_WIN32) || defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_UNIX)
-    #ifndef SK_BUILD_NO_IMAGE_ENCODE
-        #define SK_SUPPORT_IMAGE_ENCODE
-    #endif
-#endif
-
 #ifdef SK_BUILD_FOR_SYMBIAN
     #define SK_USE_RUNTIME_GLOBALS
 #endif
index 4a18cab..5b91c51 100644 (file)
@@ -266,36 +266,4 @@ private:
     SkImageDecoder& operator=(const SkImageDecoder&);
 };
 
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
-class SkWStream;
-
-class SkImageEncoder {
-public:
-    enum Type {
-        kJPEG_Type,
-        kPNG_Type
-    };
-    static SkImageEncoder* Create(Type);
-
-    virtual ~SkImageEncoder();
-    
-    /*  Quality ranges from 0..100 */
-
-    bool encodeFile(const char file[], const SkBitmap&, int quality = 80);
-    bool encodeStream(SkWStream*, const SkBitmap&, int quality = 80);
-
-    static bool EncodeFile(const char file[], const SkBitmap&, Type,
-                           int quality = 80);
-    static bool EncodeStream(SkWStream*, const SkBitmap&, Type,
-                           int quality = 80);
-
-protected:
-    virtual bool onEncode(SkWStream*, const SkBitmap&, int quality) = 0;
-};
-
-#endif /* SK_SUPPORT_IMAGE_ENCODE */
-
-///////////////////////////////////////////////////////////////////////
-
 #endif
diff --git a/include/images/SkImageEncoder.h b/include/images/SkImageEncoder.h
new file mode 100644 (file)
index 0000000..94989c0
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef SkImageEncoder_DEFINED
+#define SkImageEncoder_DEFINED
+
+#include "SkTypes.h"
+
+class SkBitmap;
+class SkWStream;
+
+class SkImageEncoder {
+public:
+    enum Type {
+        kJPEG_Type,
+        kPNG_Type
+    };
+    static SkImageEncoder* Create(Type);
+
+    virtual ~SkImageEncoder();
+    
+    /*  Quality ranges from 0..100 */
+    enum {
+        kDefaultQuality = 80
+    };
+
+    bool encodeFile(const char file[], const SkBitmap&, int quality);
+    bool encodeStream(SkWStream*, const SkBitmap&, int quality);
+
+    static bool EncodeFile(const char file[], const SkBitmap&, Type,
+                           int quality);
+    static bool EncodeStream(SkWStream*, const SkBitmap&, Type,
+                           int quality);
+
+protected:
+    virtual bool onEncode(SkWStream*, const SkBitmap&, int quality) = 0;
+};
+
+#endif
index df0723f..0d2bbbc 100644 (file)
@@ -2,7 +2,7 @@
 #include "SkDevice.h"
 #include "SkGLCanvas.h"
 #include "SkGraphics.h"
-#include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
 #include "SkPaint.h"
 #include "SkPicture.h"
 #include "SkStream.h"
@@ -438,7 +438,7 @@ bool SampleWindow::onHandleChar(SkUnichar uni) {
             cleanup_for_filename(&name);
             name.append(".png");
             if (SkImageEncoder::EncodeFile(name.c_str(), this->getBitmap(),
-                                           SkImageEncoder::kPNG_Type)) {
+                                           SkImageEncoder::kPNG_Type, 100)) {
                 SkDebugf("Created %s\n", name.c_str());
             }
             return true;
index e36ab42..e4197bf 100644 (file)
@@ -3,7 +3,7 @@
 #include "SkCanvas.h"
 #include "SkGradientShader.h"
 #include "SkGraphics.h"
-#include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
 #include "SkPath.h"
 #include "SkPorterDuff.h"
 #include "SkRegion.h"
@@ -129,7 +129,7 @@ public:
                 remove(path.c_str());
                 
                 SkImageEncoder* codec = SkImageEncoder::Create(gTypes[j]);
-                if (!codec->encodeFile(path.c_str(), fBitmaps[i])) {
+                if (!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
                 }
index 8958c82..d3fe062 100644 (file)
@@ -279,28 +279,6 @@ protected:
             
             canvas->translate(SkIntToScalar(200), 0);
         }
-
-        if (false)
-        {
-            SkBitmap    bitmap;
-            
-            bitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
-            bitmap.allocPixels();
-            bitmap.eraseColor(0);
-
-            SkCanvas    canvas(bitmap);
-            SkPaint     paint;
-            SkRect      r;
-            
-            paint.setAntiAlias(true);
-            paint.setARGB(0xFF, 0xFF, 0, 0xFF);
-            r.set(0, 0, SkIntToScalar(100), SkIntToScalar(100));
-            canvas.drawOval(r, paint);
-
-            SkImageEncoder* en = SkImageEncoder::Create(SkImageEncoder::kPNG_Type);
-            en->encodeFile("testfile.png", bitmap);
-            delete en;
-        }
     }
     
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) 
index b65c517..0043ca5 100644 (file)
@@ -17,8 +17,6 @@
 
 #include "SkTypes.h"
 
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
 #include "SkSnapshot.h"
 #include "SkAnimateMaker.h"
 #include "SkCanvas.h"
@@ -71,4 +69,3 @@ bool SkSnapshot::draw(SkAnimateMaker& maker) {
     return false;
 }
 
-#endif
index c459fbb..7392edc 100644 (file)
@@ -18,8 +18,6 @@
 #ifndef SkSnapShot_DEFINED
 #define SkSnapShot_DEFINED
 
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
 #include "SkDrawable.h"
 #include "SkImageDecoder.h"
 #include "SkMemberInfo.h"
@@ -37,6 +35,5 @@ class SkSnapshot: public SkDrawable {
     int fSeqVal;
 };
 
-#endif // SK_SUPPORT_IMAGE_ENCODE
 #endif // SkSnapShot_DEFINED
 
index 18b52d6..2d477ef 100644 (file)
@@ -155,36 +155,3 @@ bool SkImageDecoder::DecodeStream(SkStream* stream, SkBitmap* bm,
     return success;
 }
 
-///////////////////////////////////////////////////////////////////////////////
-
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
-SkImageEncoder::~SkImageEncoder() {}
-
-bool SkImageEncoder::encodeStream(SkWStream* stream, const SkBitmap& bm,
-                                  int quality) {
-    quality = SkMin32(100, SkMax32(0, quality));
-    return this->onEncode(stream, bm, quality);
-}
-
-bool SkImageEncoder::encodeFile(const char file[], const SkBitmap& bm,
-                                int quality) {
-    quality = SkMin32(100, SkMax32(0, quality));
-    SkFILEWStream   stream(file);
-    return this->onEncode(&stream, bm, quality);
-}
-
-bool SkImageEncoder::EncodeFile(const char file[], const SkBitmap& bm, Type t,
-                                int quality) {
-    SkAutoTDelete<SkImageEncoder> enc(SkImageEncoder::Create(t));
-    return enc.get() && enc.get()->encodeFile(file, bm, quality);
-}
-
-bool SkImageEncoder::EncodeStream(SkWStream* stream, const SkBitmap& bm, Type t,
-                                int quality) {
-    SkAutoTDelete<SkImageEncoder> enc(SkImageEncoder::Create(t));
-    return enc.get() && enc.get()->encodeStream(stream, bm, quality);
-}
-
-#endif
-
index 492de23..5133997 100644 (file)
@@ -15,6 +15,7 @@
  */
 
 #include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
 #include "SkColorPriv.h"
 #include "SkDither.h"
 #include "SkScaledBitmapSampler.h"
@@ -501,8 +502,6 @@ bool SkJPEGImageDecoder::onDecode(SkStream* stream, SkBitmap* bm,
 
 ///////////////////////////////////////////////////////////////////////////////
 
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
 #include "SkColorPriv.h"
 
 // taken from jcolor.c in libjpeg
@@ -795,8 +794,6 @@ SkImageEncoder* SkImageEncoder_JPEG_Factory() {
     return SkNEW(SkJPEGImageEncoder);
 }
 
-#endif /* SK_SUPPORT_IMAGE_ENCODE */
-
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 
index 862ebf1..1371ecc 100644 (file)
@@ -16,6 +16,7 @@
 */
 
 #include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
 #include "SkColor.h"
 #include "SkColorPriv.h"
 #include "SkDither.h"
@@ -443,8 +444,6 @@ bool SkPNGImageDecoder::onDecode(SkStream* sk_stream, SkBitmap* decodedBitmap,
 
 ///////////////////////////////////////////////////////////////////////////////
 
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
 #include "SkColorPriv.h"
 #include "SkUnPreMultiply.h"
 
@@ -792,4 +791,3 @@ SkImageEncoder* SkImageEncoder_PNG_Factory() {
     return SkNEW(SkPNGImageEncoder);
 }
 
-#endif /* SK_SUPPORT_IMAGE_ENCODE */
diff --git a/src/images/SkImageEncoder.cpp b/src/images/SkImageEncoder.cpp
new file mode 100644 (file)
index 0000000..d359905
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "SkImageEncoder.h"
+#include "SkBitmap.h"
+#include "SkStream.h"
+#include "SkTemplates.h"
+
+SkImageEncoder::~SkImageEncoder() {}
+
+bool SkImageEncoder::encodeStream(SkWStream* stream, const SkBitmap& bm,
+                                  int quality) {
+    quality = SkMin32(100, SkMax32(0, quality));
+    return this->onEncode(stream, bm, quality);
+}
+
+bool SkImageEncoder::encodeFile(const char file[], const SkBitmap& bm,
+                                int quality) {
+    quality = SkMin32(100, SkMax32(0, quality));
+    SkFILEWStream   stream(file);
+    return this->onEncode(&stream, bm, quality);
+}
+
+bool SkImageEncoder::EncodeFile(const char file[], const SkBitmap& bm, Type t,
+                                int quality) {
+    SkAutoTDelete<SkImageEncoder> enc(SkImageEncoder::Create(t));
+    return enc.get() && enc.get()->encodeFile(file, bm, quality);
+}
+
+bool SkImageEncoder::EncodeStream(SkWStream* stream, const SkBitmap& bm, Type t,
+                                int quality) {
+    SkAutoTDelete<SkImageEncoder> enc(SkImageEncoder::Create(t));
+    return enc.get() && enc.get()->encodeStream(stream, bm, quality);
+}
+
index 74ff112..5594eac 100644 (file)
@@ -15,6 +15,7 @@
 
 #include <Carbon/Carbon.h>
 #include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
 #include "SkMovie.h"
 #include "SkStream.h"
 #include "SkTemplates.h"
@@ -105,8 +106,6 @@ SkMovie* SkMovie::DecodeStream(SkStream* stream) {
 
 /////////////////////////////////////////////////////////////////////////
 
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
 static size_t consumer_put(void* info, const void* buffer, size_t count) {
     SkWStream* stream = reinterpret_cast<SkWStream*>(info);
     return stream->write(buffer, count) ? count : 0;
@@ -195,4 +194,3 @@ SkImageEncoder* SkImageEncoder::Create(Type t) {
     return SkNEW_ARGS(SkImageEncoder_CG, (t));
 }
 
-#endif
index d0053cf..5c45a43 100644 (file)
@@ -83,22 +83,3 @@ SkMovie* SkMovie::DecodeStream(SkStream* stream) {
     return NULL;
 }
 
-/////////////////////////////////////////////////////////////////////////
-
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
-extern SkImageEncoder* SkImageEncoder_JPEG_Factory();
-extern SkImageEncoder* SkImageEncoder_PNG_Factory();
-
-SkImageEncoder* SkImageEncoder::Create(Type t) {
-    switch (t) {
-        case kJPEG_Type:
-            return SkImageEncoder_JPEG_Factory();
-        case kPNG_Type:
-            return SkImageEncoder_PNG_Factory();
-        default:
-            return NULL;
-    }
-}
-
-#endif
index 45eb346..740af7d 100644 (file)
@@ -89,8 +89,6 @@ SkMovie* SkMovie::DecodeStream(SkStream* stream) {
 
 /////////////////////////////////////////////////////////////////////////
 
-#ifdef SK_SUPPORT_IMAGE_ENCODE
-
 extern SkImageEncoder* SkImageEncoder_JPEG_Factory();
 extern SkImageEncoder* SkImageEncoder_PNG_Factory();
 
@@ -107,4 +105,3 @@ SkImageEncoder* SkImageEncoder::Create(Type t) {
     }
 }
 
-#endif
diff --git a/src/ports/SkImageEncoder_Factory.cpp b/src/ports/SkImageEncoder_Factory.cpp
new file mode 100644 (file)
index 0000000..cdd7c04
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "SkImageEncoder.h"
+
+extern SkImageEncoder* SkImageEncoder_JPEG_Factory();
+extern SkImageEncoder* SkImageEncoder_PNG_Factory();
+
+SkImageEncoder* SkImageEncoder::Create(Type t) {
+    switch (t) {
+        case kJPEG_Type:
+            return SkImageEncoder_JPEG_Factory();
+        case kPNG_Type:
+            return SkImageEncoder_PNG_Factory();
+        default:
+            return NULL;
+    }
+}
+
index d52a7c9..848b9f9 100644 (file)
@@ -179,9 +179,7 @@ JS_INIT(Sk, Set)
 JS_INIT(Sk, Skew)
 // JS_INIT(Sk, 3D_Camera)
 // JS_INIT(Sk, 3D_Patch)
-#ifdef SK_SUPPORT_IMAGE_ENCODE
 JS_INIT(Sk, Snapshot)
-#endif
 // JS_INIT(SkDraw, Stroke)
 JS_INIT(Sk, Text)
 JS_INIT(Sk, TextOnPath)
@@ -451,9 +449,7 @@ void SkJS::InitializeDisplayables(const SkBitmap& bitmap, JSContext *cx, JSObjec
     SkewInit(cx, obj, proto);
     // 3D_CameraInit(cx, obj, proto);
     // 3D_PatchInit(cx, obj, proto);
-    #ifdef SK_SUPPORT_IMAGE_ENCODE
     SnapshotInit(cx, obj, proto);
-    #endif
 //  StrokeInit(cx, obj, proto);
     TextInit(cx, obj, proto);
     TextOnPathInit(cx, obj, proto);
index 30bf768..4b84b43 100644 (file)
@@ -7,6 +7,7 @@
        objects = {
 
 /* Begin PBXBuildFile section */
+               001EA8910F13F2CE00900BA9 /* SkImageEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 001EA8900F13F2CE00900BA9 /* SkImageEncoder.cpp */; };
                002884A50EFAB5DE0083E387 /* SkOSFile_stdio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884A20EFAB5DE0083E387 /* SkOSFile_stdio.cpp */; };
                002884A60EFAB5DE0083E387 /* SkThread_pthread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884A30EFAB5DE0083E387 /* SkThread_pthread.cpp */; };
                002884A70EFAB5DE0083E387 /* SkTime_Unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884A40EFAB5DE0083E387 /* SkTime_Unix.cpp */; };
@@ -18,6 +19,7 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
+               001EA8900F13F2CE00900BA9 /* SkImageEncoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkImageEncoder.cpp; path = ../../src/images/SkImageEncoder.cpp; sourceTree = SOURCE_ROOT; };
                002884A20EFAB5DE0083E387 /* SkOSFile_stdio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkOSFile_stdio.cpp; path = ../../src/ports/SkOSFile_stdio.cpp; sourceTree = SOURCE_ROOT; };
                002884A30EFAB5DE0083E387 /* SkThread_pthread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkThread_pthread.cpp; path = ../../src/ports/SkThread_pthread.cpp; sourceTree = SOURCE_ROOT; };
                002884A40EFAB5DE0083E387 /* SkTime_Unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkTime_Unix.cpp; path = ../../src/ports/SkTime_Unix.cpp; sourceTree = SOURCE_ROOT; };
@@ -74,6 +76,7 @@
                27739F280F11405800F233EA /* Images */ = {
                        isa = PBXGroup;
                        children = (
+                               001EA8900F13F2CE00900BA9 /* SkImageEncoder.cpp */,
                                27739F2E0F11409100F233EA /* SkImageDecoder_CG.cpp */,
                                27739F2C0F11408100F233EA /* SkImageDecoder.cpp */,
                                27739F2A0F11407000F233EA /* SkCreateCGImageRef.cpp */,
                                27739F2B0F11407000F233EA /* SkCreateCGImageRef.cpp in Sources */,
                                27739F2D0F11408100F233EA /* SkImageDecoder.cpp in Sources */,
                                27739F2F0F11409100F233EA /* SkImageDecoder_CG.cpp in Sources */,
+                               001EA8910F13F2CE00900BA9 /* SkImageEncoder.cpp in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };