Fixed Windows compiler complaints
http://codereview.appspot.com/6392044
git-svn-id: http://skia.googlecode.com/svn/trunk@4511 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/core/SkData.h b/include/core/SkData.h
index 61b52c5..301a4d8 100644
--- a/include/core/SkData.h
+++ b/include/core/SkData.h
@@ -108,7 +108,14 @@
size_t fSize;
SkData(const void* ptr, size_t size, ReleaseProc, void* context);
- ~SkData();
+ virtual ~SkData();
+
+ // This is here because SkAutoTUnref creates an internal helper class
+ // that derives from SkData (i.e., BlockRef) to prevent refs\unrefs.
+ // This helper class generates a compiler warning on Windows since the
+ // SkData's destructor is private. This friending gives the helper class
+ // access to the destructor.
+ friend class SkAutoTUnref<SkData>::BlockRef<SkData>;
typedef SkRefCnt INHERITED;
};
@@ -119,39 +126,25 @@
*/
class SkAutoDataUnref : SkNoncopyable {
public:
- SkAutoDataUnref(SkData* data) : fRef(data) {
- if (data) {
- fData = data->data();
- fSize = data->size();
- } else {
- fData = NULL;
- fSize = 0;
- }
- }
+ SkAutoDataUnref(SkData* data) : fRef(data) {}
~SkAutoDataUnref() {
SkSafeUnref(fRef);
}
- const void* data() const { return fData; }
- const uint8_t* bytes() const {
- return reinterpret_cast<const uint8_t*> (fData);
- }
- size_t size() const { return fSize; }
SkData* get() const { return fRef; }
void release() {
if (fRef) {
fRef->unref();
fRef = NULL;
- fData = NULL;
- fSize = 0;
}
}
+ SkData *operator->() const { return fRef; }
+ operator SkData*() { return fRef; }
+
private:
SkData* fRef;
- const void* fData;
- size_t fSize;
};
#endif
diff --git a/include/gpu/GrScalar.h b/include/gpu/GrScalar.h
index 4ffc4ca..5d2f13b 100644
--- a/include/gpu/GrScalar.h
+++ b/include/gpu/GrScalar.h
@@ -36,7 +36,7 @@
#define GrScalarMul(a,b) SkScalarMul(a,b)
#define GrScalarDiv(a,b) SkScalarDiv(a, b)
#define GrScalarToFloat(a) SkScalarToFloat(a)
-#define GrFloatToScalar(a) SkScalarToFloat(a)
+#define GrFloatToScalar(a) SkFloatToScalar(a)
#define GrIntToScalar(a) SkIntToScalar(a)
#define GrScalarAbs(a) SkScalarAbs(a)
#define GrScalarIsInt(a) SkScalarIsInt(a)
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index e026df9..c5a9ca1 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -1312,7 +1312,7 @@
fPicture->unref();
SkAutoDataUnref data(ostream.copyToData());
- SkMemoryStream istream(data.data(), data.size());
+ SkMemoryStream istream(data->data(), data->size());
SkPicture pict(&istream);
orig->drawPicture(pict);
} else {
diff --git a/src/animator/SkScriptTokenizer.cpp b/src/animator/SkScriptTokenizer.cpp
index 54aa2bf..1be7427 100644
--- a/src/animator/SkScriptTokenizer.cpp
+++ b/src/animator/SkScriptTokenizer.cpp
@@ -750,7 +750,7 @@
decompile(data.bytes(), data.size());
#endif
SkScriptRuntime runtime(fCallBackArray);
- runtime.executeTokens((unsigned char*) data.bytes());
+ runtime.executeTokens((unsigned char*) data->bytes());
SkScriptValue2 value1;
runtime.getResult(&value1.fOperand);
value1.fType = fReturnType;
@@ -1158,7 +1158,7 @@
decompile(data.bytes(), data.size());
#endif
SkScriptRuntime runtime(fCallBackArray);
- runtime.executeTokens((unsigned char*)data.bytes());
+ runtime.executeTokens((unsigned char*)data->bytes());
runtime.getResult(&value1.fOperand);
if (attributes->fResultIsBoolean == kResultIsBoolean)
value1.fType = SkOperand2::kS32;
diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp
index c2a308e..60095ab 100644
--- a/src/gpu/GrDrawTarget.cpp
+++ b/src/gpu/GrDrawTarget.cpp
@@ -540,7 +540,7 @@
}
bool GrDrawTarget::StageUsesTexCoords(GrVertexLayout layout, int stage) {
- return layout & gStageTexCoordMasks[stage];
+ return SkToBool(layout & gStageTexCoordMasks[stage]);
}
bool GrDrawTarget::reserveVertexAndIndexSpace(GrVertexLayout vertexLayout,
diff --git a/src/gpu/GrPathUtils.cpp b/src/gpu/GrPathUtils.cpp
index aa18792..4e487fd 100644
--- a/src/gpu/GrPathUtils.cpp
+++ b/src/gpu/GrPathUtils.cpp
@@ -199,12 +199,16 @@
// [0 0 1]
// [1 1 1]
// We invert the control pt matrix and post concat to both sides to get M.
- UVpts.setAll(0, 0.5f, 1.f,
- 0, 0, 1.f,
- 1.f, 1.f, 1.f);
+ UVpts.setAll(0, GR_ScalarHalf, GR_Scalar1,
+ 0, 0, GR_Scalar1,
+ SkScalarToPersp(GR_Scalar1),
+ SkScalarToPersp(GR_Scalar1),
+ SkScalarToPersp(GR_Scalar1));
m.setAll(qPts[0].fX, qPts[1].fX, qPts[2].fX,
qPts[0].fY, qPts[1].fY, qPts[2].fY,
- 1.f, 1.f, 1.f);
+ SkScalarToPersp(GR_Scalar1),
+ SkScalarToPersp(GR_Scalar1),
+ SkScalarToPersp(GR_Scalar1));
if (!m.invert(&m)) {
// The quad is degenerate. Hopefully this is rare. Find the pts that are
// farthest apart to compute a line (unless it is really a pt).
@@ -247,7 +251,7 @@
m.postConcat(UVpts);
// The matrix should not have perspective.
- static const GrScalar gTOL = 1.f / 100.f;
+ static const GrScalar gTOL = GrFloatToScalar(1.f / 100.f);
GrAssert(GrScalarAbs(m.get(SkMatrix::kMPersp0)) < gTOL);
GrAssert(GrScalarAbs(m.get(SkMatrix::kMPersp1)) < gTOL);
diff --git a/src/gpu/gl/GrGpuGL_program.cpp b/src/gpu/gl/GrGpuGL_program.cpp
index d506c6c..736be93 100644
--- a/src/gpu/gl/GrGpuGL_program.cpp
+++ b/src/gpu/gl/GrGpuGL_program.cpp
@@ -119,7 +119,7 @@
// and perform a y-flip.
GrMatrix m;
m.setScale(GrIntToScalar(2) / rt->width(), GrIntToScalar(-2) / rt->height());
- m.postTranslate(-1.f , 1.f);
+ m.postTranslate(-GR_Scalar1, GR_Scalar1);
m.preConcat(vm);
// GL wants a column-major 4x4.
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index 68c210d..d05b640 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -1119,7 +1119,7 @@
gsState.updateDrawingState(entry->fState);
SkAutoDataUnref copy(entry->fContent.copyToData());
- data->write(copy.data(), copy.size());
+ data->write(copy->data(), copy->size());
entry = entry->fNext.get();
}
gsState.drainStack();
diff --git a/src/pdf/SkPDFImage.cpp b/src/pdf/SkPDFImage.cpp
index 72379b1..429667a 100644
--- a/src/pdf/SkPDFImage.cpp
+++ b/src/pdf/SkPDFImage.cpp
@@ -338,10 +338,10 @@
SkRefPtr<SkPDFInt> zeroVal = new SkPDFInt(0);
zeroVal->unref(); // SkRefPtr and new both took a reference.
SkRefPtr<SkPDFScalar> scale5Val =
- new SkPDFScalar(8.2258f); // 255/2^5-1
+ new SkPDFScalar(SkFloatToScalar(8.2258f)); // 255/2^5-1
scale5Val->unref(); // SkRefPtr and new both took a reference.
SkRefPtr<SkPDFScalar> scale6Val =
- new SkPDFScalar(4.0476f); // 255/2^6-1
+ new SkPDFScalar(SkFloatToScalar(4.0476f)); // 255/2^6-1
scale6Val->unref(); // SkRefPtr and new both took a reference.
SkRefPtr<SkPDFArray> decodeValue = new SkPDFArray();
decodeValue->unref(); // SkRefPtr and new both took a reference.
diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp
index e257144..e546b5c 100644
--- a/src/pipe/SkGPipeWrite.cpp
+++ b/src/pipe/SkGPipeWrite.cpp
@@ -51,7 +51,7 @@
if (writer) {
writer->write32(size);
SkAutoDataUnref data(stream.copyToData());
- writer->writePad(data.data(), size);
+ writer->writePad(data->data(), size);
}
return 4 + SkAlign4(size);
}
diff --git a/src/views/SkTouchGesture.cpp b/src/views/SkTouchGesture.cpp
index 31adc74..1828f03 100644
--- a/src/views/SkTouchGesture.cpp
+++ b/src/views/SkTouchGesture.cpp
@@ -14,9 +14,9 @@
#define DISCRETIZE_TRANSLATE_TO_AVOID_FLICKER true
-static const float MAX_FLING_SPEED = 1500;
+static const SkScalar MAX_FLING_SPEED = SkIntToScalar(1500);
-static float pin_max_fling(float speed) {
+static SkScalar pin_max_fling(SkScalar speed) {
if (speed > MAX_FLING_SPEED) {
speed = MAX_FLING_SPEED;
}
@@ -50,7 +50,7 @@
void SkFlingState::reset(float sx, float sy) {
fActive = true;
- fDirection.set(sx, sy);
+ fDirection.set(SkFloatToScalar(sx), SkFloatToScalar(sy));
fSpeed0 = SkPoint::Normalize(&fDirection);
fSpeed0 = pin_max_fling(fSpeed0);
fTime0 = getseconds();
@@ -82,7 +82,7 @@
tx = (float)sk_float_round2int(tx);
ty = (float)sk_float_round2int(ty);
}
- matrix->setTranslate(tx, ty);
+ matrix->setTranslate(SkFloatToScalar(tx), SkFloatToScalar(ty));
// printf("---- evaluate (%g %g)\n", tx, ty);
return true;
@@ -181,8 +181,8 @@
return -1;
}
-static float center(float pos0, float pos1) {
- return (pos0 + pos1) * 0.5f;
+static SkScalar center(float pos0, float pos1) {
+ return SkFloatToScalar((pos0 + pos1) * 0.5f);
}
static const float MAX_ZOOM_SCALE = 4;
@@ -190,7 +190,7 @@
float SkTouchGesture::limitTotalZoom(float scale) const {
// this query works 'cause we know that we're square-scale w/ no skew/rotation
- const float curr = fGlobalM[0];
+ const float curr = SkScalarToFloat(fGlobalM[0]);
if (scale > 1 && curr * scale > MAX_ZOOM_SCALE) {
scale = MAX_ZOOM_SCALE / curr;
diff --git a/tests/FlateTest.cpp b/tests/FlateTest.cpp
index 8697df9..446e412 100644
--- a/tests/FlateTest.cpp
+++ b/tests/FlateTest.cpp
@@ -72,14 +72,16 @@
inputSize = testStream->getLength();
if (inputSize == 0)
inputSize = testStream->read(NULL, SkZeroSizeMemStream::kGetSizeKey);
- REPORTER_ASSERT(reporter, data1.size() == inputSize);
+ REPORTER_ASSERT(reporter, data1->size() == inputSize);
REPORTER_ASSERT(reporter, memcmp(testStream->getMemoryBase(),
- data1.data(), data1.size()) == 0);
+ data1->data(),
+ data1->size()) == 0);
// Check that the uncompressed data matches the source data.
SkAutoDataUnref data2(uncompressed.copyToData());
REPORTER_ASSERT(reporter, testData.getLength() == uncompressed.getOffset());
- REPORTER_ASSERT(reporter, memcmp(testData.getMemoryBase(), data2.data(),
+ REPORTER_ASSERT(reporter, memcmp(testData.getMemoryBase(),
+ data2->data(),
testData.getLength()) == 0);
}
diff --git a/tests/PDFPrimitivesTest.cpp b/tests/PDFPrimitivesTest.cpp
index 2423d56..ea3093f 100644
--- a/tests/PDFPrimitivesTest.cpp
+++ b/tests/PDFPrimitivesTest.cpp
@@ -38,10 +38,10 @@
static bool stream_equals(const SkDynamicMemoryWStream& stream, size_t offset,
const void* buffer, size_t len) {
SkAutoDataUnref data(stream.copyToData());
- if (offset + len > data.size()) {
+ if (offset + len > data->size()) {
return false;
}
- return memcmp(data.bytes() + offset, buffer, len) == 0;
+ return memcmp(data->bytes() + offset, buffer, len) == 0;
}
static void CheckObjectOutput(skiatest::Reporter* reporter, SkPDFObject* obj,
@@ -128,19 +128,19 @@
expectedResult1.writeText("\nendstream");
SkAutoDataUnref expectedResultData1(expectedResult1.copyToData());
CheckObjectOutput(reporter, stream.get(),
- (const char*) expectedResultData1.data(),
- expectedResultData1.size(), true, false);
+ (const char*) expectedResultData1->data(),
+ expectedResultData1->size(), true, false);
// Then again with compression.
SkDynamicMemoryWStream expectedResult2;
expectedResult2.writeText("<</Filter /FlateDecode\n/Length 116\n"
">> stream\n");
- expectedResult2.write(compressedData.data(), compressedData.size());
+ expectedResult2.write(compressedData->data(), compressedData->size());
expectedResult2.writeText("\nendstream");
SkAutoDataUnref expectedResultData2(expectedResult2.copyToData());
CheckObjectOutput(reporter, stream.get(),
- (const char*) expectedResultData2.data(),
- expectedResultData2.size(), true, true);
+ (const char*) expectedResultData2->data(),
+ expectedResultData2->size(), true, true);
}
}
diff --git a/tests/PathMeasureTest.cpp b/tests/PathMeasureTest.cpp
index ee78c6b..9d153c2 100644
--- a/tests/PathMeasureTest.cpp
+++ b/tests/PathMeasureTest.cpp
@@ -152,14 +152,14 @@
REPORTER_ASSERT(reporter, position.fY == 0);
REPORTER_ASSERT(reporter, tangent.fX == SK_Scalar1);
REPORTER_ASSERT(reporter, tangent.fY == 0);
- REPORTER_ASSERT(reporter, meas.getPosTan(SK_Scalar1 * 2.5f, &position, &tangent));
+ REPORTER_ASSERT(reporter, meas.getPosTan(SkFloatToScalar(2.5f), &position, &tangent));
REPORTER_ASSERT(reporter,
SkScalarNearlyEqual(position.fX, SK_Scalar1, SkFloatToScalar(0.0001f)));
REPORTER_ASSERT(reporter,
- SkScalarNearlyEqual(position.fY, SK_Scalar1 * 1.5f));
+ SkScalarNearlyEqual(position.fY, SkFloatToScalar(1.5f)));
REPORTER_ASSERT(reporter, tangent.fX == 0);
REPORTER_ASSERT(reporter, tangent.fY == SK_Scalar1);
- REPORTER_ASSERT(reporter, meas.getPosTan(SK_Scalar1 * 4.5f, &position, &tangent));
+ REPORTER_ASSERT(reporter, meas.getPosTan(SkFloatToScalar(4.5f), &position, &tangent));
REPORTER_ASSERT(reporter,
SkScalarNearlyEqual(position.fX,
SkFloatToScalar(2.5f),
diff --git a/tests/ToUnicode.cpp b/tests/ToUnicode.cpp
index 99e9ef6..ea9e258 100644
--- a/tests/ToUnicode.cpp
+++ b/tests/ToUnicode.cpp
@@ -16,13 +16,13 @@
static bool stream_equals(const SkDynamicMemoryWStream& stream, size_t offset,
const char* buffer, size_t len) {
SkAutoDataUnref data(stream.copyToData());
- if (offset + len > data.size()) {
+ if (offset + len > data->size()) {
return false;
}
if (len != strlen(buffer)) {
return false;
}
- return memcmp(data.bytes() + offset, buffer, len) == 0;
+ return memcmp(data->bytes() + offset, buffer, len) == 0;
}
void append_cmap_sections(const SkTDArray<SkUnichar>& glyphToUnicode,
diff --git a/tools/bench_pictures_main.cpp b/tools/bench_pictures_main.cpp
index b2a7b7d..1c3dd4a 100644
--- a/tools/bench_pictures_main.cpp
+++ b/tools/bench_pictures_main.cpp
@@ -85,7 +85,8 @@
};
static void clip_tile(SkPicture* picture, const TileInfo& tile) {
- SkRect clip = SkRect::MakeWH(picture->width(), picture->height());
+ SkRect clip = SkRect::MakeWH(SkIntToScalar(picture->width()),
+ SkIntToScalar(picture->height()));
tile.fCanvas->clipRect(clip);
}
@@ -98,7 +99,8 @@
options.fTileWidth, options.fTileHeight);
bitmap.extractSubset(tile.fBitmap, rect);
tile.fCanvas = new SkCanvas(*(tile.fBitmap));
- tile.fCanvas->translate(-tile_x_start, -tile_y_start);
+ tile.fCanvas->translate(SkIntToScalar(-tile_x_start),
+ SkIntToScalar(-tile_y_start));
clip_tile(picture, tile);
}