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

Side by Side Diff: gm/gmmain.cpp

Issue 14230022: Fixes for piping bitmaps with encoded data. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Add some asserts and comments. Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | include/core/SkPicture.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 /* 8 /*
9 * Code for the "gm" (Golden Master) rendering comparison tool. 9 * Code for the "gm" (Golden Master) rendering comparison tool.
10 * 10 *
(...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 SkDynamicMemoryWStream storage; 947 SkDynamicMemoryWStream storage;
948 src.serialize(&storage); 948 src.serialize(&storage);
949 949
950 size_t streamSize = storage.getOffset(); 950 size_t streamSize = storage.getOffset();
951 SkAutoMalloc dstStorage(streamSize); 951 SkAutoMalloc dstStorage(streamSize);
952 void* dst = dstStorage.get(); 952 void* dst = dstStorage.get();
953 //char* dst = new char [streamSize]; 953 //char* dst = new char [streamSize];
954 //@todo thudson 22 April 2011 when can we safely delete [] dst? 954 //@todo thudson 22 April 2011 when can we safely delete [] dst?
955 storage.copyTo(dst); 955 storage.copyTo(dst);
956 SkMemoryStream pictReadback(dst, streamSize); 956 SkMemoryStream pictReadback(dst, streamSize);
957 SkPicture* retval = new SkPicture (&pictReadback); 957 bool success;
958 // Pass a decoding bitmap function so that the factory GM (which has an SkBitmap with
959 // encoded data) does not fail.
960 SkPicture* retval = new SkPicture (&pictReadback, &success, &SkImageDeco der::DecodeMemory);
958 return retval; 961 return retval;
959 } 962 }
960 963
961 // Test: draw into a bitmap or pdf. 964 // Test: draw into a bitmap or pdf.
962 // Depending on flags, possibly compare to an expected image. 965 // Depending on flags, possibly compare to an expected image.
963 ErrorCombination test_drawing(GM* gm, 966 ErrorCombination test_drawing(GM* gm,
964 const ConfigData& gRec, 967 const ConfigData& gRec,
965 const char writePath [], 968 const char writePath [],
966 GrSurface* gpuTarget, 969 GrSurface* gpuTarget,
967 SkBitmap* bitmap) { 970 SkBitmap* bitmap) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 if (gm->getFlags() & GM::kSkipPipe_Flag) { 1041 if (gm->getFlags() & GM::kSkipPipe_Flag) {
1039 RecordTestResults(kIntentionallySkipped_ErrorType, name, 1042 RecordTestResults(kIntentionallySkipped_ErrorType, name,
1040 renderModeDescriptor.c_str()); 1043 renderModeDescriptor.c_str());
1041 errors.add(kIntentionallySkipped_ErrorType); 1044 errors.add(kIntentionallySkipped_ErrorType);
1042 } else { 1045 } else {
1043 SkBitmap bitmap; 1046 SkBitmap bitmap;
1044 SkISize size = gm->getISize(); 1047 SkISize size = gm->getISize();
1045 setup_bitmap(gRec, size, &bitmap); 1048 setup_bitmap(gRec, size, &bitmap);
1046 SkCanvas canvas(bitmap); 1049 SkCanvas canvas(bitmap);
1047 installFilter(&canvas); 1050 installFilter(&canvas);
1048 PipeController pipeController(&canvas); 1051 // Pass a decoding function so the factory GM (which has an SkBi tmap
1052 // with encoded data) will not fail playback.
1053 PipeController pipeController(&canvas, &SkImageDecoder::DecodeMe mory);
1049 SkGPipeWriter writer; 1054 SkGPipeWriter writer;
1050 SkCanvas* pipeCanvas = writer.startRecording(&pipeController, 1055 SkCanvas* pipeCanvas = writer.startRecording(&pipeController,
1051 gPipeWritingFlagCom bos[i].flags, 1056 gPipeWritingFlagCom bos[i].flags,
1052 size.width(), size. height()); 1057 size.width(), size. height());
1053 if (!simulateFailure) { 1058 if (!simulateFailure) {
1054 invokeGM(gm, pipeCanvas, false, false); 1059 invokeGM(gm, pipeCanvas, false, false);
1055 } 1060 }
1056 complete_bitmap(&bitmap); 1061 complete_bitmap(&bitmap);
1057 writer.endRecording(); 1062 writer.endRecording();
1058 errors.add(compare_test_results_to_reference_bitmap( 1063 errors.add(compare_test_results_to_reference_bitmap(
(...skipping 18 matching lines...) Expand all
1077 (gm->getFlags() & GM::kSkipTiled_Flag)) { 1082 (gm->getFlags() & GM::kSkipTiled_Flag)) {
1078 RecordTestResults(kIntentionallySkipped_ErrorType, name, 1083 RecordTestResults(kIntentionallySkipped_ErrorType, name,
1079 renderModeDescriptor.c_str()); 1084 renderModeDescriptor.c_str());
1080 errors.add(kIntentionallySkipped_ErrorType); 1085 errors.add(kIntentionallySkipped_ErrorType);
1081 } else { 1086 } else {
1082 SkBitmap bitmap; 1087 SkBitmap bitmap;
1083 SkISize size = gm->getISize(); 1088 SkISize size = gm->getISize();
1084 setup_bitmap(gRec, size, &bitmap); 1089 setup_bitmap(gRec, size, &bitmap);
1085 SkCanvas canvas(bitmap); 1090 SkCanvas canvas(bitmap);
1086 installFilter(&canvas); 1091 installFilter(&canvas);
1087 TiledPipeController pipeController(bitmap); 1092 TiledPipeController pipeController(bitmap, &SkImageDecoder::Deco deMemory);
1088 SkGPipeWriter writer; 1093 SkGPipeWriter writer;
1089 SkCanvas* pipeCanvas = writer.startRecording(&pipeController, 1094 SkCanvas* pipeCanvas = writer.startRecording(&pipeController,
1090 gPipeWritingFlagCom bos[i].flags, 1095 gPipeWritingFlagCom bos[i].flags,
1091 size.width(), size. height()); 1096 size.width(), size. height());
1092 invokeGM(gm, pipeCanvas, false, false); 1097 invokeGM(gm, pipeCanvas, false, false);
1093 complete_bitmap(&bitmap); 1098 complete_bitmap(&bitmap);
1094 writer.endRecording(); 1099 writer.endRecording();
1095 errors.add(compare_test_results_to_reference_bitmap(name, 1100 errors.add(compare_test_results_to_reference_bitmap(name,
1096 renderModeDe scriptor.c_str(), 1101 renderModeDe scriptor.c_str(),
1097 bitmap, &ref erenceBitmap)); 1102 bitmap, &ref erenceBitmap));
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after
2002 if (FLAGS_forceBWtext) { 2007 if (FLAGS_forceBWtext) {
2003 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); 2008 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref();
2004 } 2009 }
2005 } 2010 }
2006 2011
2007 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 2012 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
2008 int main(int argc, char * const argv[]) { 2013 int main(int argc, char * const argv[]) {
2009 return tool_main(argc, (char**) argv); 2014 return tool_main(argc, (char**) argv);
2010 } 2015 }
2011 #endif 2016 #endif
OLDNEW
« no previous file with comments | « no previous file | include/core/SkPicture.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698