OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |