| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  * Copyright 2015 Google Inc. |     2  * Copyright 2015 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 #include "DMSrcSink.h" |     8 #include "DMSrcSink.h" | 
|     9 #include "SamplePipeControllers.h" |     9 #include "SamplePipeControllers.h" | 
|    10 #include "SkCodec.h" |    10 #include "SkCodec.h" | 
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   127     } |   127     } | 
|   128     decodeInfo = decodeInfo.makeWH(size.width(), size.height()); |   128     decodeInfo = decodeInfo.makeWH(size.width(), size.height()); | 
|   129  |   129  | 
|   130     // Construct a color table for the decode if necessary |   130     // Construct a color table for the decode if necessary | 
|   131     SkAutoTUnref<SkColorTable> colorTable(NULL); |   131     SkAutoTUnref<SkColorTable> colorTable(NULL); | 
|   132     SkPMColor* colorPtr = NULL; |   132     SkPMColor* colorPtr = NULL; | 
|   133     int* colorCountPtr = NULL; |   133     int* colorCountPtr = NULL; | 
|   134     int maxColors = 256; |   134     int maxColors = 256; | 
|   135     if (kIndex_8_SkColorType == decodeInfo.colorType()) { |   135     if (kIndex_8_SkColorType == decodeInfo.colorType()) { | 
|   136         SkPMColor colors[256]; |   136         SkPMColor colors[256]; | 
|   137         colorTable.reset(SkNEW_ARGS(SkColorTable, (colors, maxColors))); |   137         colorTable.reset(new SkColorTable(colors, maxColors)); | 
|   138         colorPtr = const_cast<SkPMColor*>(colorTable->readColors()); |   138         colorPtr = const_cast<SkPMColor*>(colorTable->readColors()); | 
|   139         colorCountPtr = &maxColors; |   139         colorCountPtr = &maxColors; | 
|   140     } |   140     } | 
|   141  |   141  | 
|   142     // FIXME: Currently we cannot draw unpremultiplied sources. |   142     // FIXME: Currently we cannot draw unpremultiplied sources. | 
|   143     if (decodeInfo.alphaType() == kUnpremul_SkAlphaType) { |   143     if (decodeInfo.alphaType() == kUnpremul_SkAlphaType) { | 
|   144         decodeInfo = decodeInfo.makeAlphaType(kPremul_SkAlphaType); |   144         decodeInfo = decodeInfo.makeAlphaType(kPremul_SkAlphaType); | 
|   145     } |   145     } | 
|   146  |   146  | 
|   147     SkBitmap bitmap; |   147     SkBitmap bitmap; | 
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   213             * subsets. |   213             * subsets. | 
|   214             */ |   214             */ | 
|   215             SkImageInfo largestSubsetDecodeInfo = |   215             SkImageInfo largestSubsetDecodeInfo = | 
|   216                     decodeInfo.makeWH(subsetWidth + extraX, subsetHeight + extra
      Y); |   216                     decodeInfo.makeWH(subsetWidth + extraX, subsetHeight + extra
      Y); | 
|   217             SkBitmap largestSubsetBm; |   217             SkBitmap largestSubsetBm; | 
|   218             if (!largestSubsetBm.tryAllocPixels(largestSubsetDecodeInfo, NULL, c
      olorTable.get())) { |   218             if (!largestSubsetBm.tryAllocPixels(largestSubsetDecodeInfo, NULL, c
      olorTable.get())) { | 
|   219                 return SkStringPrintf("Image(%s) is too large (%d x %d)\n", fPat
      h.c_str(), |   219                 return SkStringPrintf("Image(%s) is too large (%d x %d)\n", fPat
      h.c_str(), | 
|   220                         largestSubsetDecodeInfo.width(), largestSubsetDecodeInfo
      .height()); |   220                         largestSubsetDecodeInfo.width(), largestSubsetDecodeInfo
      .height()); | 
|   221             } |   221             } | 
|   222             const size_t rowBytes = decodeInfo.minRowBytes(); |   222             const size_t rowBytes = decodeInfo.minRowBytes(); | 
|   223             char* buffer = SkNEW_ARRAY(char, largestSubsetDecodeInfo.height() * 
      rowBytes); |   223             char* buffer = new char[largestSubsetDecodeInfo.height() * rowBytes]
      ; | 
|   224             SkAutoTDeleteArray<char> lineDeleter(buffer); |   224             SkAutoTDeleteArray<char> lineDeleter(buffer); | 
|   225             for (int col = 0; col < divisor; col++) { |   225             for (int col = 0; col < divisor; col++) { | 
|   226                 //currentSubsetWidth may be larger than subsetWidth for rightmos
      t subsets |   226                 //currentSubsetWidth may be larger than subsetWidth for rightmos
      t subsets | 
|   227                 const int currentSubsetWidth = (col + 1 == divisor) ? |   227                 const int currentSubsetWidth = (col + 1 == divisor) ? | 
|   228                         subsetWidth + extraX : subsetWidth; |   228                         subsetWidth + extraX : subsetWidth; | 
|   229                 const int x = col * subsetWidth; |   229                 const int x = col * subsetWidth; | 
|   230                 for (int row = 0; row < divisor; row++) { |   230                 for (int row = 0; row < divisor; row++) { | 
|   231                     //currentSubsetHeight may be larger than subsetHeight for bo
      ttom subsets |   231                     //currentSubsetHeight may be larger than subsetHeight for bo
      ttom subsets | 
|   232                     const int currentSubsetHeight = (row + 1 == divisor) ? |   232                     const int currentSubsetHeight = (row + 1 == divisor) ? | 
|   233                             subsetHeight + extraY : subsetHeight; |   233                             subsetHeight + extraY : subsetHeight; | 
| (...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   760     SkAutoTUnref<SkPicture> pic(recorder.endRecording()); |   760     SkAutoTUnref<SkPicture> pic(recorder.endRecording()); | 
|   761     pic->serialize(dst); |   761     pic->serialize(dst); | 
|   762     return ""; |   762     return ""; | 
|   763 } |   763 } | 
|   764  |   764  | 
|   765 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ~~~~~~~~~~~~~~~~*/ |   765 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ~~~~~~~~~~~~~~~~*/ | 
|   766  |   766  | 
|   767 SVGSink::SVGSink() {} |   767 SVGSink::SVGSink() {} | 
|   768  |   768  | 
|   769 Error SVGSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const 
      { |   769 Error SVGSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const 
      { | 
|   770     SkAutoTDelete<SkXMLWriter> xmlWriter(SkNEW_ARGS(SkXMLStreamWriter, (dst))); |   770     SkAutoTDelete<SkXMLWriter> xmlWriter(new SkXMLStreamWriter(dst)); | 
|   771     SkAutoTUnref<SkCanvas> canvas(SkSVGCanvas::Create( |   771     SkAutoTUnref<SkCanvas> canvas(SkSVGCanvas::Create( | 
|   772         SkRect::MakeWH(SkIntToScalar(src.size().width()), SkIntToScalar(src.size
      ().height())), |   772         SkRect::MakeWH(SkIntToScalar(src.size().width()), SkIntToScalar(src.size
      ().height())), | 
|   773         xmlWriter)); |   773         xmlWriter)); | 
|   774     return src.draw(canvas); |   774     return src.draw(canvas); | 
|   775 } |   775 } | 
|   776  |   776  | 
|   777 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ~~~~~~~~~~~~~~~~*/ |   777 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ~~~~~~~~~~~~~~~~*/ | 
|   778  |   778  | 
|   779 RasterSink::RasterSink(SkColorType colorType) : fColorType(colorType) {} |   779 RasterSink::RasterSink(SkColorType colorType) : fColorType(colorType) {} | 
|   780  |   780  | 
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1064             skr.visit<void>(i, drawsAsSingletonPictures); |  1064             skr.visit<void>(i, drawsAsSingletonPictures); | 
|  1065         } |  1065         } | 
|  1066         SkAutoTUnref<SkPicture> macroPic(macroRec.endRecordingAsPicture()); |  1066         SkAutoTUnref<SkPicture> macroPic(macroRec.endRecordingAsPicture()); | 
|  1067  |  1067  | 
|  1068         canvas->drawPicture(macroPic); |  1068         canvas->drawPicture(macroPic); | 
|  1069         return ""; |  1069         return ""; | 
|  1070     }); |  1070     }); | 
|  1071 } |  1071 } | 
|  1072  |  1072  | 
|  1073 }  // namespace DM |  1073 }  // namespace DM | 
| OLD | NEW |