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 #ifndef UNICODE | 8 #ifndef UNICODE |
9 #define UNICODE | 9 #define UNICODE |
10 #endif | 10 #endif |
(...skipping 791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
802 HRM(clampBrush->SetTileMode(SkToXpsTileMode[xy[0]][xy[1]]), | 802 HRM(clampBrush->SetTileMode(SkToXpsTileMode[xy[0]][xy[1]]), |
803 "Could not set tile mode on visual brush for image brush."); | 803 "Could not set tile mode on visual brush for image brush."); |
804 HRM(clampBrush->SetOpacity(alpha / 255.0f), | 804 HRM(clampBrush->SetOpacity(alpha / 255.0f), |
805 "Could not set opacity on visual brush for image brush."); | 805 "Could not set opacity on visual brush for image brush."); |
806 | 806 |
807 HRM(clampBrush->QueryInterface(xpsBrush), "QI failed."); | 807 HRM(clampBrush->QueryInterface(xpsBrush), "QI failed."); |
808 } | 808 } |
809 | 809 |
810 SkTScopedComPtr<IXpsOMMatrixTransform> xpsMatrixToUse; | 810 SkTScopedComPtr<IXpsOMMatrixTransform> xpsMatrixToUse; |
811 HR(this->createXpsTransform(localMatrix, &xpsMatrixToUse)); | 811 HR(this->createXpsTransform(localMatrix, &xpsMatrixToUse)); |
812 if (NULL != xpsMatrixToUse.get()) { | 812 if (xpsMatrixToUse.get()) { |
813 HRM((*xpsBrush)->SetTransformLocal(xpsMatrixToUse.get()), | 813 HRM((*xpsBrush)->SetTransformLocal(xpsMatrixToUse.get()), |
814 "Could not set transform for image brush."); | 814 "Could not set transform for image brush."); |
815 } else { | 815 } else { |
816 //TODO(bungeman): perspective bitmaps in general. | 816 //TODO(bungeman): perspective bitmaps in general. |
817 } | 817 } |
818 | 818 |
819 return S_OK; | 819 return S_OK; |
820 } | 820 } |
821 | 821 |
822 HRESULT SkXPSDevice::createXpsGradientStop(const SkColor skColor, | 822 HRESULT SkXPSDevice::createXpsGradientStop(const SkColor skColor, |
823 const SkScalar offset, | 823 const SkScalar offset, |
824 IXpsOMGradientStop** xpsGradStop) { | 824 IXpsOMGradientStop** xpsGradStop) { |
825 XPS_COLOR gradStopXpsColor = xps_color(skColor); | 825 XPS_COLOR gradStopXpsColor = xps_color(skColor); |
826 HRM(this->fXpsFactory->CreateGradientStop(&gradStopXpsColor, | 826 HRM(this->fXpsFactory->CreateGradientStop(&gradStopXpsColor, |
827 NULL, | 827 NULL, |
828 SkScalarToFLOAT(offset), | 828 SkScalarToFLOAT(offset), |
829 xpsGradStop), | 829 xpsGradStop), |
830 "Could not create gradient stop."); | 830 "Could not create gradient stop."); |
831 return S_OK; | 831 return S_OK; |
832 } | 832 } |
833 | 833 |
834 HRESULT SkXPSDevice::createXpsLinearGradient(SkShader::GradientInfo info, | 834 HRESULT SkXPSDevice::createXpsLinearGradient(SkShader::GradientInfo info, |
835 const SkAlpha alpha, | 835 const SkAlpha alpha, |
836 const SkMatrix& localMatrix, | 836 const SkMatrix& localMatrix, |
837 IXpsOMMatrixTransform* xpsMatrix, | 837 IXpsOMMatrixTransform* xpsMatrix, |
838 IXpsOMBrush** xpsBrush) { | 838 IXpsOMBrush** xpsBrush) { |
839 XPS_POINT startPoint; | 839 XPS_POINT startPoint; |
840 XPS_POINT endPoint; | 840 XPS_POINT endPoint; |
841 if (NULL != xpsMatrix) { | 841 if (xpsMatrix) { |
842 startPoint = xps_point(info.fPoint[0]); | 842 startPoint = xps_point(info.fPoint[0]); |
843 endPoint = xps_point(info.fPoint[1]); | 843 endPoint = xps_point(info.fPoint[1]); |
844 } else { | 844 } else { |
845 transform_offsets(info.fColorOffsets, info.fColorCount, | 845 transform_offsets(info.fColorOffsets, info.fColorCount, |
846 info.fPoint[0], info.fPoint[1], | 846 info.fPoint[0], info.fPoint[1], |
847 localMatrix); | 847 localMatrix); |
848 startPoint = xps_point(info.fPoint[0], localMatrix); | 848 startPoint = xps_point(info.fPoint[0], localMatrix); |
849 endPoint = xps_point(info.fPoint[1], localMatrix); | 849 endPoint = xps_point(info.fPoint[1], localMatrix); |
850 } | 850 } |
851 | 851 |
852 SkTScopedComPtr<IXpsOMGradientStop> gradStop0; | 852 SkTScopedComPtr<IXpsOMGradientStop> gradStop0; |
853 HR(createXpsGradientStop(info.fColors[0], | 853 HR(createXpsGradientStop(info.fColors[0], |
854 info.fColorOffsets[0], | 854 info.fColorOffsets[0], |
855 &gradStop0)); | 855 &gradStop0)); |
856 | 856 |
857 SkTScopedComPtr<IXpsOMGradientStop> gradStop1; | 857 SkTScopedComPtr<IXpsOMGradientStop> gradStop1; |
858 HR(createXpsGradientStop(info.fColors[1], | 858 HR(createXpsGradientStop(info.fColors[1], |
859 info.fColorOffsets[1], | 859 info.fColorOffsets[1], |
860 &gradStop1)); | 860 &gradStop1)); |
861 | 861 |
862 SkTScopedComPtr<IXpsOMLinearGradientBrush> gradientBrush; | 862 SkTScopedComPtr<IXpsOMLinearGradientBrush> gradientBrush; |
863 HRM(this->fXpsFactory->CreateLinearGradientBrush(gradStop0.get(), | 863 HRM(this->fXpsFactory->CreateLinearGradientBrush(gradStop0.get(), |
864 gradStop1.get(), | 864 gradStop1.get(), |
865 &startPoint, | 865 &startPoint, |
866 &endPoint, | 866 &endPoint, |
867 &gradientBrush), | 867 &gradientBrush), |
868 "Could not create linear gradient brush."); | 868 "Could not create linear gradient brush."); |
869 if (NULL != xpsMatrix) { | 869 if (xpsMatrix) { |
870 HRM(gradientBrush->SetTransformLocal(xpsMatrix), | 870 HRM(gradientBrush->SetTransformLocal(xpsMatrix), |
871 "Could not set transform on linear gradient brush."); | 871 "Could not set transform on linear gradient brush."); |
872 } | 872 } |
873 | 873 |
874 SkTScopedComPtr<IXpsOMGradientStopCollection> gradStopCollection; | 874 SkTScopedComPtr<IXpsOMGradientStopCollection> gradStopCollection; |
875 HRM(gradientBrush->GetGradientStops(&gradStopCollection), | 875 HRM(gradientBrush->GetGradientStops(&gradStopCollection), |
876 "Could not get linear gradient stop collection."); | 876 "Could not get linear gradient stop collection."); |
877 for (int i = 2; i < info.fColorCount; ++i) { | 877 for (int i = 2; i < info.fColorCount; ++i) { |
878 SkTScopedComPtr<IXpsOMGradientStop> gradStop; | 878 SkTScopedComPtr<IXpsOMGradientStop> gradStop; |
879 HR(createXpsGradientStop(info.fColors[i], | 879 HR(createXpsGradientStop(info.fColors[i], |
(...skipping 25 matching lines...) Expand all Loading... |
905 | 905 |
906 SkTScopedComPtr<IXpsOMGradientStop> gradStop1; | 906 SkTScopedComPtr<IXpsOMGradientStop> gradStop1; |
907 HR(createXpsGradientStop(info.fColors[1], | 907 HR(createXpsGradientStop(info.fColors[1], |
908 info.fColorOffsets[1], | 908 info.fColorOffsets[1], |
909 &gradStop1)); | 909 &gradStop1)); |
910 | 910 |
911 //TODO: figure out how to fake better if not affine | 911 //TODO: figure out how to fake better if not affine |
912 XPS_POINT centerPoint; | 912 XPS_POINT centerPoint; |
913 XPS_POINT gradientOrigin; | 913 XPS_POINT gradientOrigin; |
914 XPS_SIZE radiiSizes; | 914 XPS_SIZE radiiSizes; |
915 if (NULL != xpsMatrix) { | 915 if (xpsMatrix) { |
916 centerPoint = xps_point(info.fPoint[0]); | 916 centerPoint = xps_point(info.fPoint[0]); |
917 gradientOrigin = xps_point(info.fPoint[0]); | 917 gradientOrigin = xps_point(info.fPoint[0]); |
918 radiiSizes.width = SkScalarToFLOAT(info.fRadius[0]); | 918 radiiSizes.width = SkScalarToFLOAT(info.fRadius[0]); |
919 radiiSizes.height = SkScalarToFLOAT(info.fRadius[0]); | 919 radiiSizes.height = SkScalarToFLOAT(info.fRadius[0]); |
920 } else { | 920 } else { |
921 centerPoint = xps_point(info.fPoint[0], localMatrix); | 921 centerPoint = xps_point(info.fPoint[0], localMatrix); |
922 gradientOrigin = xps_point(info.fPoint[0], localMatrix); | 922 gradientOrigin = xps_point(info.fPoint[0], localMatrix); |
923 | 923 |
924 SkScalar radius = info.fRadius[0]; | 924 SkScalar radius = info.fRadius[0]; |
925 SkVector vec[2]; | 925 SkVector vec[2]; |
(...skipping 10 matching lines...) Expand all Loading... |
936 } | 936 } |
937 | 937 |
938 SkTScopedComPtr<IXpsOMRadialGradientBrush> gradientBrush; | 938 SkTScopedComPtr<IXpsOMRadialGradientBrush> gradientBrush; |
939 HRM(this->fXpsFactory->CreateRadialGradientBrush(gradStop0.get(), | 939 HRM(this->fXpsFactory->CreateRadialGradientBrush(gradStop0.get(), |
940 gradStop1.get(), | 940 gradStop1.get(), |
941 ¢erPoint, | 941 ¢erPoint, |
942 &gradientOrigin, | 942 &gradientOrigin, |
943 &radiiSizes, | 943 &radiiSizes, |
944 &gradientBrush), | 944 &gradientBrush), |
945 "Could not create radial gradient brush."); | 945 "Could not create radial gradient brush."); |
946 if (NULL != xpsMatrix) { | 946 if (xpsMatrix) { |
947 HRM(gradientBrush->SetTransformLocal(xpsMatrix), | 947 HRM(gradientBrush->SetTransformLocal(xpsMatrix), |
948 "Could not set transform on radial gradient brush."); | 948 "Could not set transform on radial gradient brush."); |
949 } | 949 } |
950 | 950 |
951 SkTScopedComPtr<IXpsOMGradientStopCollection> gradStopCollection; | 951 SkTScopedComPtr<IXpsOMGradientStopCollection> gradStopCollection; |
952 HRM(gradientBrush->GetGradientStops(&gradStopCollection), | 952 HRM(gradientBrush->GetGradientStops(&gradStopCollection), |
953 "Could not get radial gradient stop collection."); | 953 "Could not get radial gradient stop collection."); |
954 for (int i = 2; i < info.fColorCount; ++i) { | 954 for (int i = 2; i < info.fColorCount; ++i) { |
955 SkTScopedComPtr<IXpsOMGradientStop> gradStop; | 955 SkTScopedComPtr<IXpsOMGradientStop> gradStop; |
956 HR(createXpsGradientStop(info.fColors[i], | 956 HR(createXpsGradientStop(info.fColors[i], |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1012 shader->asAGradient(&info); | 1012 shader->asAGradient(&info); |
1013 | 1013 |
1014 if (1 == info.fColorCount) { | 1014 if (1 == info.fColorCount) { |
1015 SkColor color = info.fColors[0]; | 1015 SkColor color = info.fColors[0]; |
1016 SkAlpha alpha = skPaint.getAlpha(); | 1016 SkAlpha alpha = skPaint.getAlpha(); |
1017 HR(this->createXpsSolidColorBrush(color, alpha, brush)); | 1017 HR(this->createXpsSolidColorBrush(color, alpha, brush)); |
1018 return S_OK; | 1018 return S_OK; |
1019 } | 1019 } |
1020 | 1020 |
1021 SkMatrix localMatrix = shader->getLocalMatrix(); | 1021 SkMatrix localMatrix = shader->getLocalMatrix(); |
1022 if (NULL != parentTransform) { | 1022 if (parentTransform) { |
1023 localMatrix.preConcat(*parentTransform); | 1023 localMatrix.preConcat(*parentTransform); |
1024 } | 1024 } |
1025 SkTScopedComPtr<IXpsOMMatrixTransform> xpsMatrixToUse; | 1025 SkTScopedComPtr<IXpsOMMatrixTransform> xpsMatrixToUse; |
1026 HR(this->createXpsTransform(localMatrix, &xpsMatrixToUse)); | 1026 HR(this->createXpsTransform(localMatrix, &xpsMatrixToUse)); |
1027 | 1027 |
1028 if (SkShader::kLinear_GradientType == gradientType) { | 1028 if (SkShader::kLinear_GradientType == gradientType) { |
1029 HR(this->createXpsLinearGradient(info, | 1029 HR(this->createXpsLinearGradient(info, |
1030 skPaint.getAlpha(), | 1030 skPaint.getAlpha(), |
1031 localMatrix, | 1031 localMatrix, |
1032 xpsMatrixToUse.get(), | 1032 xpsMatrixToUse.get(), |
(...skipping 25 matching lines...) Expand all Loading... |
1058 SkShader::TileMode xy[2]; | 1058 SkShader::TileMode xy[2]; |
1059 SkShader::BitmapType bitmapType = shader->asABitmap(&outTexture, | 1059 SkShader::BitmapType bitmapType = shader->asABitmap(&outTexture, |
1060 &outMatrix, | 1060 &outMatrix, |
1061 xy); | 1061 xy); |
1062 switch (bitmapType) { | 1062 switch (bitmapType) { |
1063 case SkShader::kNone_BitmapType: | 1063 case SkShader::kNone_BitmapType: |
1064 break; | 1064 break; |
1065 case SkShader::kDefault_BitmapType: { | 1065 case SkShader::kDefault_BitmapType: { |
1066 //TODO: outMatrix?? | 1066 //TODO: outMatrix?? |
1067 SkMatrix localMatrix = shader->getLocalMatrix(); | 1067 SkMatrix localMatrix = shader->getLocalMatrix(); |
1068 if (NULL != parentTransform) { | 1068 if (parentTransform) { |
1069 localMatrix.preConcat(*parentTransform); | 1069 localMatrix.preConcat(*parentTransform); |
1070 } | 1070 } |
1071 | 1071 |
1072 SkTScopedComPtr<IXpsOMTileBrush> tileBrush; | 1072 SkTScopedComPtr<IXpsOMTileBrush> tileBrush; |
1073 HR(this->createXpsImageBrush(outTexture, | 1073 HR(this->createXpsImageBrush(outTexture, |
1074 localMatrix, | 1074 localMatrix, |
1075 xy, | 1075 xy, |
1076 skPaint.getAlpha(), | 1076 skPaint.getAlpha(), |
1077 &tileBrush)); | 1077 &tileBrush)); |
1078 | 1078 |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1320 SkTDArray<BOOL> segmentStrokes; | 1320 SkTDArray<BOOL> segmentStrokes; |
1321 SkTDArray<FLOAT> segmentData; | 1321 SkTDArray<FLOAT> segmentData; |
1322 | 1322 |
1323 SkTScopedComPtr<IXpsOMGeometryFigure> xpsFigure; | 1323 SkTScopedComPtr<IXpsOMGeometryFigure> xpsFigure; |
1324 SkPath::Iter iter(path, true); | 1324 SkPath::Iter iter(path, true); |
1325 SkPoint points[4]; | 1325 SkPoint points[4]; |
1326 SkPath::Verb verb; | 1326 SkPath::Verb verb; |
1327 while ((verb = iter.next(points)) != SkPath::kDone_Verb) { | 1327 while ((verb = iter.next(points)) != SkPath::kDone_Verb) { |
1328 switch (verb) { | 1328 switch (verb) { |
1329 case SkPath::kMove_Verb: { | 1329 case SkPath::kMove_Verb: { |
1330 if (NULL != xpsFigure.get()) { | 1330 if (xpsFigure.get()) { |
1331 HR(close_figure(segmentTypes, segmentStrokes, segmentData, | 1331 HR(close_figure(segmentTypes, segmentStrokes, segmentData, |
1332 stroke, fill, | 1332 stroke, fill, |
1333 xpsFigure.get() , xpsFigures)); | 1333 xpsFigure.get() , xpsFigures)); |
1334 xpsFigure.reset(); | 1334 xpsFigure.reset(); |
1335 segmentTypes.rewind(); | 1335 segmentTypes.rewind(); |
1336 segmentStrokes.rewind(); | 1336 segmentStrokes.rewind(); |
1337 segmentData.rewind(); | 1337 segmentData.rewind(); |
1338 } | 1338 } |
1339 // Define the start point. | 1339 // Define the start point. |
1340 XPS_POINT startPoint = xps_point(points[0]); | 1340 XPS_POINT startPoint = xps_point(points[0]); |
(...skipping 30 matching lines...) Expand all Loading... |
1371 break; | 1371 break; |
1372 case SkPath::kClose_Verb: | 1372 case SkPath::kClose_Verb: |
1373 // we ignore these, and just get the whole segment from | 1373 // we ignore these, and just get the whole segment from |
1374 // the corresponding line/quad/cubic verbs | 1374 // the corresponding line/quad/cubic verbs |
1375 break; | 1375 break; |
1376 default: | 1376 default: |
1377 SkDEBUGFAIL("unexpected verb"); | 1377 SkDEBUGFAIL("unexpected verb"); |
1378 break; | 1378 break; |
1379 } | 1379 } |
1380 } | 1380 } |
1381 if (NULL != xpsFigure.get()) { | 1381 if (xpsFigure.get()) { |
1382 HR(close_figure(segmentTypes, segmentStrokes, segmentData, | 1382 HR(close_figure(segmentTypes, segmentStrokes, segmentData, |
1383 stroke, fill, | 1383 stroke, fill, |
1384 xpsFigure.get(), xpsFigures)); | 1384 xpsFigure.get(), xpsFigures)); |
1385 } | 1385 } |
1386 return S_OK; | 1386 return S_OK; |
1387 } | 1387 } |
1388 | 1388 |
1389 void SkXPSDevice::convertToPpm(const SkMaskFilter* filter, | 1389 void SkXPSDevice::convertToPpm(const SkMaskFilter* filter, |
1390 SkMatrix* matrix, | 1390 SkMatrix* matrix, |
1391 SkVector* ppuScale, | 1391 SkVector* ppuScale, |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1827 SkTScopedComPtr<IXpsOMMatrixTransform> xpsTransform; | 1827 SkTScopedComPtr<IXpsOMMatrixTransform> xpsTransform; |
1828 HRV(this->createXpsTransform(transform, &xpsTransform)); | 1828 HRV(this->createXpsTransform(transform, &xpsTransform)); |
1829 if (xpsTransform.get()) { | 1829 if (xpsTransform.get()) { |
1830 HRVM(shadedGeometry->SetTransformLocal(xpsTransform.get()), | 1830 HRVM(shadedGeometry->SetTransformLocal(xpsTransform.get()), |
1831 "Could not set transform for bitmap."); | 1831 "Could not set transform for bitmap."); |
1832 } else { | 1832 } else { |
1833 //TODO: perspective that bitmap! | 1833 //TODO: perspective that bitmap! |
1834 } | 1834 } |
1835 | 1835 |
1836 SkTScopedComPtr<IXpsOMGeometryFigure> rectFigure; | 1836 SkTScopedComPtr<IXpsOMGeometryFigure> rectFigure; |
1837 if (NULL != xpsTransform.get()) { | 1837 if (xpsTransform.get()) { |
1838 const SkShader::TileMode xy[2] = { | 1838 const SkShader::TileMode xy[2] = { |
1839 SkShader::kClamp_TileMode, | 1839 SkShader::kClamp_TileMode, |
1840 SkShader::kClamp_TileMode, | 1840 SkShader::kClamp_TileMode, |
1841 }; | 1841 }; |
1842 SkTScopedComPtr<IXpsOMTileBrush> xpsImageBrush; | 1842 SkTScopedComPtr<IXpsOMTileBrush> xpsImageBrush; |
1843 HRV(this->createXpsImageBrush(bitmap, | 1843 HRV(this->createXpsImageBrush(bitmap, |
1844 transform, | 1844 transform, |
1845 xy, | 1845 xy, |
1846 paint.getAlpha(), | 1846 paint.getAlpha(), |
1847 &xpsImageBrush)); | 1847 &xpsImageBrush)); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1972 useCanvasForClip = true; | 1972 useCanvasForClip = true; |
1973 } else { | 1973 } else { |
1974 SkDEBUGFAIL("Attempt to add glyphs in perspective."); | 1974 SkDEBUGFAIL("Attempt to add glyphs in perspective."); |
1975 useCanvasForClip = false; | 1975 useCanvasForClip = false; |
1976 } | 1976 } |
1977 } | 1977 } |
1978 | 1978 |
1979 SkTScopedComPtr<IXpsOMGlyphsEditor> glyphsEditor; | 1979 SkTScopedComPtr<IXpsOMGlyphsEditor> glyphsEditor; |
1980 HRM(glyphs->GetGlyphsEditor(&glyphsEditor), "Could not get glyph editor."); | 1980 HRM(glyphs->GetGlyphsEditor(&glyphsEditor), "Could not get glyph editor."); |
1981 | 1981 |
1982 if (NULL != text) { | 1982 if (text) { |
1983 HRM(glyphsEditor->SetUnicodeString(text), | 1983 HRM(glyphsEditor->SetUnicodeString(text), |
1984 "Could not set unicode string."); | 1984 "Could not set unicode string."); |
1985 } | 1985 } |
1986 | 1986 |
1987 if (NULL != xpsGlyphs) { | 1987 if (xpsGlyphs) { |
1988 HRM(glyphsEditor->SetGlyphIndices(xpsGlyphsLen, xpsGlyphs), | 1988 HRM(glyphsEditor->SetGlyphIndices(xpsGlyphsLen, xpsGlyphs), |
1989 "Could not set glyphs."); | 1989 "Could not set glyphs."); |
1990 } | 1990 } |
1991 | 1991 |
1992 HRM(glyphsEditor->ApplyEdits(), "Could not apply glyph edits."); | 1992 HRM(glyphsEditor->ApplyEdits(), "Could not apply glyph edits."); |
1993 | 1993 |
1994 SkTScopedComPtr<IXpsOMBrush> xpsFillBrush; | 1994 SkTScopedComPtr<IXpsOMBrush> xpsFillBrush; |
1995 HR(this->createXpsBrush( | 1995 HR(this->createXpsBrush( |
1996 paint, | 1996 paint, |
1997 &xpsFillBrush, | 1997 &xpsFillBrush, |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2277 IID_PPV_ARGS(&this->fXpsFactory)), | 2277 IID_PPV_ARGS(&this->fXpsFactory)), |
2278 "Could not create factory for layer."); | 2278 "Could not create factory for layer."); |
2279 | 2279 |
2280 HRVM(this->fXpsFactory->CreateCanvas(&this->fCurrentXpsCanvas), | 2280 HRVM(this->fXpsFactory->CreateCanvas(&this->fCurrentXpsCanvas), |
2281 "Could not create canvas for layer."); | 2281 "Could not create canvas for layer."); |
2282 } | 2282 } |
2283 | 2283 |
2284 bool SkXPSDevice::allowImageFilter(const SkImageFilter*) { | 2284 bool SkXPSDevice::allowImageFilter(const SkImageFilter*) { |
2285 return false; | 2285 return false; |
2286 } | 2286 } |
OLD | NEW |