import portability fixes from Chrome around floats
move porting functions for SkDebugf into /ports directory
git-svn-id: http://skia.googlecode.com/svn/trunk@147 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/core/SkFloatingPoint.h b/include/core/SkFloatingPoint.h
index 68bf6ef..e6856cf 100644
--- a/include/core/SkFloatingPoint.h
+++ b/include/core/SkFloatingPoint.h
@@ -25,6 +25,12 @@
#include <float.h>
#include "SkFloatBits.h"
+// If math.h had powf(float, float), I could remove this wrapper
+static inline float sk_float_pow(float base, float exp) {
+ return static_cast<float>(pow(static_cast<double>(base),
+ static_cast<double>(exp)));
+}
+
#ifdef SK_BUILD_FOR_WINCE
#define sk_float_sqrt(x) (float)::sqrt(x)
#define sk_float_sin(x) (float)::sin(x)
diff --git a/src/core/SkDrawing.cpp b/src/core/SkDrawing.cpp
index 85f3175..f54afcc 100644
--- a/src/core/SkDrawing.cpp
+++ b/src/core/SkDrawing.cpp
@@ -1,28 +1,28 @@
-#include "SkDrawable.h"
+#include "SkDrawing.h"
#include "SkCanvas.h"
-SkDrawable::SkDrawable() {
+SkDrawing::SkDrawing() {
fMatrix.reset();
fParent = fFirstChild = fNextSibling = fPrevSibling = NULL;
}
-SkDrawable::~SkDrawable() {
+SkDrawing::~SkDrawing() {
this->detachAllChildren();
}
///////////////////////////////////////////////////////////////////////////////
-void SkDrawable::resetMatrix() {
+void SkDrawing::resetMatrix() {
fMatrix.reset();
}
-void SkDrawable::getMatrix(SkMatrix* matrix) const {
+void SkDrawing::getMatrix(SkMatrix* matrix) const {
if (matrix) {
*matrix = fMatrix;
}
}
-void SkDrawable::setMatrix(const SkMatrix& matrix) {
+void SkDrawing::setMatrix(const SkMatrix& matrix) {
if (fMatrix != matrix) {
this->inval();
fMatrix = matrix;
@@ -30,7 +30,7 @@
}
}
-void SkDrawable::draw(SkCanvas* canvas) {
+void SkDrawing::draw(SkCanvas* canvas) {
SkAutoCanvasRestore ar(canvas, false);
canvas->save(SkCanvas::kMatrix_SaveFlag);
canvas->concat(fMatrix);
@@ -38,7 +38,7 @@
this->onDraw(canvas);
B2FIter iter(this);
- SkDrawable* child;
+ SkDrawing* child;
while ((child = iter.next()) != NULL) {
child->draw(canvas);
}
@@ -46,8 +46,8 @@
///////////////////////////////////////////////////////////////////////////////
-void SkDrawable::detachFromParent() {
- SkDrawable* parent = fParent;
+void SkDrawing::detachFromParent() {
+ SkDrawing* parent = fParent;
if (NULL == parent) {
return;
@@ -55,7 +55,7 @@
this->inval();
- SkDrawable* next = NULL;
+ SkDrawing* next = NULL;
if (fNextSibling != this) { // do we have any siblings
fNextSibling->fPrevSibling = fPrevSibling;
@@ -71,7 +71,7 @@
this->unref();
}
-SkDrawable* SkDrawable::attachChildToBack(SkDrawable* child) {
+SkDrawing* SkDrawing::attachChildToBack(SkDrawing* child) {
SkASSERT(child != this);
if (child == NULL || fFirstChild == child) {
@@ -97,7 +97,7 @@
return child;
}
-SkDrawable* SkDrawable::attachChildToFront(SkDrawable* child) {
+SkDrawing* SkDrawing::attachChildToFront(SkDrawing* child) {
SkASSERT(child != this);
if (child == NULL || fFirstChild && fFirstChild->fPrevSibling == child) {
@@ -123,7 +123,7 @@
return child;
}
-void SkDrawable::detachAllChildren() {
+void SkDrawing::detachAllChildren() {
while (fFirstChild) {
fFirstChild->detachFromParent();
}
@@ -131,16 +131,16 @@
///////////////////////////////////////////////////////////////////////////////
-SkDrawable::B2FIter::B2FIter(const SkDrawable* parent) {
+SkDrawing::B2FIter::B2FIter(const SkDrawing* parent) {
fFirstChild = parent ? parent->fFirstChild : NULL;
fChild = fFirstChild;
}
-SkDrawable* SkDrawable::B2FIter::next() {
- SkDrawable* curr = fChild;
+SkDrawing* SkDrawing::B2FIter::next() {
+ SkDrawing* curr = fChild;
if (fChild) {
- SkDrawable* next = fChild->fNextSibling;
+ SkDrawing* next = fChild->fNextSibling;
if (next == fFirstChild) {
next = NULL;
}
diff --git a/src/core/SkFP.h b/src/core/SkFP.h
index 5e25d22..3aab411 100644
--- a/src/core/SkFP.h
+++ b/src/core/SkFP.h
@@ -41,7 +41,7 @@
#define SkFPDivInt(a, n) ((a) / (n))
#define SkFPInvert(x) SkScalarInvert(x)
#define SkFPSqrt(x) SkScalarSqrt(x)
- #define SkFPCubeRoot(x) static_cast<float>(pow(x, 0.33333333333))
+ #define SkFPCubeRoot(x) sk_float_pow(x, 0.3333333f)
#define SkFPLT(a, b) ((a) < (b))
#define SkFPLE(a, b) ((a) <= (b))
diff --git a/src/core/core_files.mk b/src/core/core_files.mk
index 37c55e1..27849e7 100644
--- a/src/core/core_files.mk
+++ b/src/core/core_files.mk
@@ -27,7 +27,6 @@
SkCordic.cpp \
SkCubicClipper.cpp \
SkDebug.cpp \
- SkDebug_stdio.cpp \
SkDeque.cpp \
SkDevice.cpp \
SkDither.cpp \
diff --git a/src/effects/SkEmbossMask.cpp b/src/effects/SkEmbossMask.cpp
index 28e38a1..fd11f54 100644
--- a/src/effects/SkEmbossMask.cpp
+++ b/src/effects/SkEmbossMask.cpp
@@ -75,7 +75,7 @@
if ((dy & 15) == 0)
::fprintf(file, "\t");
- U16 value = SkToU16((1 << 15) / SkSqrt32(dx * dx + dy * dy + kDelta*kDelta/4));
+ uint16_t value = SkToU16((1 << 15) / SkSqrt32(dx * dx + dy * dy + kDelta*kDelta/4));
::fprintf(file, "0x%04X", value);
if (dx * 128 + dy < 128*128-1)
diff --git a/src/core/SkDebug_stdio.cpp b/src/ports/SkDebug_android.cpp
similarity index 80%
rename from src/core/SkDebug_stdio.cpp
rename to src/ports/SkDebug_android.cpp
index c8a0d81..f1fd34f 100644
--- a/src/core/SkDebug_stdio.cpp
+++ b/src/ports/SkDebug_android.cpp
@@ -19,8 +19,6 @@
static const size_t kBufferSize = 256;
-#ifdef ANDROID
-
#define LOG_TAG "skia"
#include <utils/Log.h>
@@ -42,20 +40,4 @@
va_end(args);
}
-#else
-
-#include <stdarg.h>
-#include <stdio.h>
-
-void SkDebugf(const char format[], ...)
-{
- char buffer[kBufferSize + 1];
- va_list args;
- va_start(args, format);
- vsnprintf(buffer, kBufferSize, format, args);
- va_end(args);
- fprintf(stderr, buffer);
-}
-
-#endif
diff --git a/src/ports/SkDebug_stdio.cpp b/src/ports/SkDebug_stdio.cpp
new file mode 100644
index 0000000..f5bf687
--- /dev/null
+++ b/src/ports/SkDebug_stdio.cpp
@@ -0,0 +1,33 @@
+/* libs/corecg/SkDebug_stdio.cpp
+**
+** Copyright 2006, 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 "SkTypes.h"
+
+static const size_t kBufferSize = 256;
+
+#include <stdarg.h>
+#include <stdio.h>
+
+void SkDebugf(const char format[], ...) {
+ char buffer[kBufferSize + 1];
+ va_list args;
+ va_start(args, format);
+ vsnprintf(buffer, kBufferSize, format, args);
+ va_end(args);
+ fprintf(stderr, buffer);
+}
+
diff --git a/src/ports/ports_files.mk b/src/ports/ports_files.mk
index 07dacfa..8760ae1 100644
--- a/src/ports/ports_files.mk
+++ b/src/ports/ports_files.mk
@@ -1,4 +1,5 @@
SOURCE := \
+ SkDebug_stdio.cpp \
SkFontHost_none.cpp \
SkGlobals_global.cpp \
SkOSFile_stdio.cpp \
diff --git a/xcode/core/core.xcodeproj/project.pbxproj b/xcode/core/core.xcodeproj/project.pbxproj
index af3f3c0..1f1ee10 100644
--- a/xcode/core/core.xcodeproj/project.pbxproj
+++ b/xcode/core/core.xcodeproj/project.pbxproj
@@ -50,7 +50,6 @@
005F25970EF94F7900582A90 /* SkCordic.h in Headers */ = {isa = PBXBuildFile; fileRef = 005F251E0EF94F7900582A90 /* SkCordic.h */; };
005F25980EF94F7900582A90 /* SkCoreBlitters.h in Headers */ = {isa = PBXBuildFile; fileRef = 005F251F0EF94F7900582A90 /* SkCoreBlitters.h */; };
005F25990EF94F7900582A90 /* SkDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 005F25200EF94F7900582A90 /* SkDebug.cpp */; };
- 005F259A0EF94F7900582A90 /* SkDebug_stdio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 005F25210EF94F7900582A90 /* SkDebug_stdio.cpp */; };
005F259B0EF94F7900582A90 /* SkDeque.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 005F25220EF94F7900582A90 /* SkDeque.cpp */; };
005F259C0EF94F7900582A90 /* SkDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 005F25230EF94F7900582A90 /* SkDevice.cpp */; };
005F259D0EF94F7900582A90 /* SkDither.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 005F25240EF94F7900582A90 /* SkDither.cpp */; };
@@ -173,7 +172,6 @@
005F251E0EF94F7900582A90 /* SkCordic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkCordic.h; path = ../../src/core/SkCordic.h; sourceTree = SOURCE_ROOT; };
005F251F0EF94F7900582A90 /* SkCoreBlitters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkCoreBlitters.h; path = ../../src/core/SkCoreBlitters.h; sourceTree = SOURCE_ROOT; };
005F25200EF94F7900582A90 /* SkDebug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkDebug.cpp; path = ../../src/core/SkDebug.cpp; sourceTree = SOURCE_ROOT; };
- 005F25210EF94F7900582A90 /* SkDebug_stdio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkDebug_stdio.cpp; path = ../../src/core/SkDebug_stdio.cpp; sourceTree = SOURCE_ROOT; };
005F25220EF94F7900582A90 /* SkDeque.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkDeque.cpp; path = ../../src/core/SkDeque.cpp; sourceTree = SOURCE_ROOT; };
005F25230EF94F7900582A90 /* SkDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkDevice.cpp; path = ../../src/core/SkDevice.cpp; sourceTree = SOURCE_ROOT; };
005F25240EF94F7900582A90 /* SkDither.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkDither.cpp; path = ../../src/core/SkDither.cpp; sourceTree = SOURCE_ROOT; };
@@ -323,7 +321,6 @@
005F251E0EF94F7900582A90 /* SkCordic.h */,
005F251F0EF94F7900582A90 /* SkCoreBlitters.h */,
005F25200EF94F7900582A90 /* SkDebug.cpp */,
- 005F25210EF94F7900582A90 /* SkDebug_stdio.cpp */,
005F25220EF94F7900582A90 /* SkDeque.cpp */,
005F25230EF94F7900582A90 /* SkDevice.cpp */,
005F25240EF94F7900582A90 /* SkDither.cpp */,
@@ -527,7 +524,6 @@
005F25950EF94F7900582A90 /* SkColorTable.cpp in Sources */,
005F25960EF94F7900582A90 /* SkCordic.cpp in Sources */,
005F25990EF94F7900582A90 /* SkDebug.cpp in Sources */,
- 005F259A0EF94F7900582A90 /* SkDebug_stdio.cpp in Sources */,
005F259B0EF94F7900582A90 /* SkDeque.cpp in Sources */,
005F259C0EF94F7900582A90 /* SkDevice.cpp in Sources */,
005F259D0EF94F7900582A90 /* SkDither.cpp in Sources */,
diff --git a/xcode/maccore/maccore.xcodeproj/project.pbxproj b/xcode/maccore/maccore.xcodeproj/project.pbxproj
index 4b84b43..6bc1a33 100644
--- a/xcode/maccore/maccore.xcodeproj/project.pbxproj
+++ b/xcode/maccore/maccore.xcodeproj/project.pbxproj
@@ -12,6 +12,7 @@
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 */; };
002884E10EFABFFC0083E387 /* SkGlobals_global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884E00EFABFFC0083E387 /* SkGlobals_global.cpp */; };
+ 00488AF40F86532E00C08A57 /* SkDebug_stdio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00488AF30F86532E00C08A57 /* SkDebug_stdio.cpp */; };
007A7BEF0F01427100A2D6EE /* SkFontHost_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 007A7BEE0F01427100A2D6EE /* SkFontHost_mac.cpp */; };
27739F2B0F11407000F233EA /* SkCreateCGImageRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27739F2A0F11407000F233EA /* SkCreateCGImageRef.cpp */; };
27739F2D0F11408100F233EA /* SkImageDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 27739F2C0F11408100F233EA /* SkImageDecoder.cpp */; };
@@ -24,6 +25,7 @@
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; };
002884E00EFABFFC0083E387 /* SkGlobals_global.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkGlobals_global.cpp; path = ../../src/ports/SkGlobals_global.cpp; sourceTree = SOURCE_ROOT; };
+ 00488AF30F86532E00C08A57 /* SkDebug_stdio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkDebug_stdio.cpp; path = ../../src/ports/SkDebug_stdio.cpp; sourceTree = SOURCE_ROOT; };
007A7BEE0F01427100A2D6EE /* SkFontHost_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkFontHost_mac.cpp; path = ../../src/ports/SkFontHost_mac.cpp; sourceTree = SOURCE_ROOT; };
27739F2A0F11407000F233EA /* SkCreateCGImageRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkCreateCGImageRef.cpp; path = ../../src/utils/mac/SkCreateCGImageRef.cpp; sourceTree = SOURCE_ROOT; };
27739F2C0F11408100F233EA /* SkImageDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkImageDecoder.cpp; path = ../../src/images/SkImageDecoder.cpp; sourceTree = SOURCE_ROOT; };
@@ -56,6 +58,7 @@
08FB7795FE84155DC02AAC07 /* Source */ = {
isa = PBXGroup;
children = (
+ 00488AF30F86532E00C08A57 /* SkDebug_stdio.cpp */,
002884E00EFABFFC0083E387 /* SkGlobals_global.cpp */,
002884A20EFAB5DE0083E387 /* SkOSFile_stdio.cpp */,
002884A30EFAB5DE0083E387 /* SkThread_pthread.cpp */,
@@ -152,6 +155,7 @@
27739F2D0F11408100F233EA /* SkImageDecoder.cpp in Sources */,
27739F2F0F11409100F233EA /* SkImageDecoder_CG.cpp in Sources */,
001EA8910F13F2CE00900BA9 /* SkImageEncoder.cpp in Sources */,
+ 00488AF40F86532E00C08A57 /* SkDebug_stdio.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};