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 933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
944 SkDynamicMemoryWStream storage; | 944 SkDynamicMemoryWStream storage; |
945 src.serialize(&storage); | 945 src.serialize(&storage); |
946 | 946 |
947 size_t streamSize = storage.getOffset(); | 947 size_t streamSize = storage.getOffset(); |
948 SkAutoMalloc dstStorage(streamSize); | 948 SkAutoMalloc dstStorage(streamSize); |
949 void* dst = dstStorage.get(); | 949 void* dst = dstStorage.get(); |
950 //char* dst = new char [streamSize]; | 950 //char* dst = new char [streamSize]; |
951 //@todo thudson 22 April 2011 when can we safely delete [] dst? | 951 //@todo thudson 22 April 2011 when can we safely delete [] dst? |
952 storage.copyTo(dst); | 952 storage.copyTo(dst); |
953 SkMemoryStream pictReadback(dst, streamSize); | 953 SkMemoryStream pictReadback(dst, streamSize); |
954 SkPicture* retval = new SkPicture (&pictReadback); | 954 bool success; |
| 955 // Pass a decoding bitmap function so that the factory GM (which has an
SkBitmap with |
| 956 // encoded data) does not fail. |
| 957 SkPicture* retval = new SkPicture (&pictReadback, &success, &SkImageDeco
der::DecodeMemory); |
955 return retval; | 958 return retval; |
956 } | 959 } |
957 | 960 |
958 // Test: draw into a bitmap or pdf. | 961 // Test: draw into a bitmap or pdf. |
959 // Depending on flags, possibly compare to an expected image. | 962 // Depending on flags, possibly compare to an expected image. |
960 ErrorCombination test_drawing(GM* gm, | 963 ErrorCombination test_drawing(GM* gm, |
961 const ConfigData& gRec, | 964 const ConfigData& gRec, |
962 const char writePath [], | 965 const char writePath [], |
963 GrSurface* gpuTarget, | 966 GrSurface* gpuTarget, |
964 SkBitmap* bitmap) { | 967 SkBitmap* bitmap) { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 if (gm->getFlags() & GM::kSkipPipe_Flag) { | 1038 if (gm->getFlags() & GM::kSkipPipe_Flag) { |
1036 RecordTestResults(kIntentionallySkipped_ErrorType, name, | 1039 RecordTestResults(kIntentionallySkipped_ErrorType, name, |
1037 renderModeDescriptor.c_str()); | 1040 renderModeDescriptor.c_str()); |
1038 errors.add(kIntentionallySkipped_ErrorType); | 1041 errors.add(kIntentionallySkipped_ErrorType); |
1039 } else { | 1042 } else { |
1040 SkBitmap bitmap; | 1043 SkBitmap bitmap; |
1041 SkISize size = gm->getISize(); | 1044 SkISize size = gm->getISize(); |
1042 setup_bitmap(gRec, size, &bitmap); | 1045 setup_bitmap(gRec, size, &bitmap); |
1043 SkCanvas canvas(bitmap); | 1046 SkCanvas canvas(bitmap); |
1044 installFilter(&canvas); | 1047 installFilter(&canvas); |
1045 PipeController pipeController(&canvas); | 1048 // Pass a decoding function so the factory GM (which has an SkBi
tmap |
| 1049 // with encoded data) will not fail playback. |
| 1050 PipeController pipeController(&canvas, &SkImageDecoder::DecodeMe
mory); |
1046 SkGPipeWriter writer; | 1051 SkGPipeWriter writer; |
1047 SkCanvas* pipeCanvas = writer.startRecording(&pipeController, | 1052 SkCanvas* pipeCanvas = writer.startRecording(&pipeController, |
1048 gPipeWritingFlagCom
bos[i].flags, | 1053 gPipeWritingFlagCom
bos[i].flags, |
1049 size.width(), size.
height()); | 1054 size.width(), size.
height()); |
1050 if (!simulateFailure) { | 1055 if (!simulateFailure) { |
1051 invokeGM(gm, pipeCanvas, false, false); | 1056 invokeGM(gm, pipeCanvas, false, false); |
1052 } | 1057 } |
1053 complete_bitmap(&bitmap); | 1058 complete_bitmap(&bitmap); |
1054 writer.endRecording(); | 1059 writer.endRecording(); |
1055 errors.add(compare_test_results_to_reference_bitmap( | 1060 errors.add(compare_test_results_to_reference_bitmap( |
(...skipping 18 matching lines...) Expand all Loading... |
1074 (gm->getFlags() & GM::kSkipTiled_Flag)) { | 1079 (gm->getFlags() & GM::kSkipTiled_Flag)) { |
1075 RecordTestResults(kIntentionallySkipped_ErrorType, name, | 1080 RecordTestResults(kIntentionallySkipped_ErrorType, name, |
1076 renderModeDescriptor.c_str()); | 1081 renderModeDescriptor.c_str()); |
1077 errors.add(kIntentionallySkipped_ErrorType); | 1082 errors.add(kIntentionallySkipped_ErrorType); |
1078 } else { | 1083 } else { |
1079 SkBitmap bitmap; | 1084 SkBitmap bitmap; |
1080 SkISize size = gm->getISize(); | 1085 SkISize size = gm->getISize(); |
1081 setup_bitmap(gRec, size, &bitmap); | 1086 setup_bitmap(gRec, size, &bitmap); |
1082 SkCanvas canvas(bitmap); | 1087 SkCanvas canvas(bitmap); |
1083 installFilter(&canvas); | 1088 installFilter(&canvas); |
1084 TiledPipeController pipeController(bitmap); | 1089 TiledPipeController pipeController(bitmap, &SkImageDecoder::Deco
deMemory); |
1085 SkGPipeWriter writer; | 1090 SkGPipeWriter writer; |
1086 SkCanvas* pipeCanvas = writer.startRecording(&pipeController, | 1091 SkCanvas* pipeCanvas = writer.startRecording(&pipeController, |
1087 gPipeWritingFlagCom
bos[i].flags, | 1092 gPipeWritingFlagCom
bos[i].flags, |
1088 size.width(), size.
height()); | 1093 size.width(), size.
height()); |
1089 invokeGM(gm, pipeCanvas, false, false); | 1094 invokeGM(gm, pipeCanvas, false, false); |
1090 complete_bitmap(&bitmap); | 1095 complete_bitmap(&bitmap); |
1091 writer.endRecording(); | 1096 writer.endRecording(); |
1092 errors.add(compare_test_results_to_reference_bitmap(name, | 1097 errors.add(compare_test_results_to_reference_bitmap(name, |
1093 renderModeDe
scriptor.c_str(), | 1098 renderModeDe
scriptor.c_str(), |
1094 bitmap, &ref
erenceBitmap)); | 1099 bitmap, &ref
erenceBitmap)); |
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1911 if (FLAGS_forceBWtext) { | 1916 if (FLAGS_forceBWtext) { |
1912 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); | 1917 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); |
1913 } | 1918 } |
1914 } | 1919 } |
1915 | 1920 |
1916 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 1921 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) |
1917 int main(int argc, char * const argv[]) { | 1922 int main(int argc, char * const argv[]) { |
1918 return tool_main(argc, (char**) argv); | 1923 return tool_main(argc, (char**) argv); |
1919 } | 1924 } |
1920 #endif | 1925 #endif |
OLD | NEW |