#include "SkScalar.h"
#include "SkStream.h"
#include "SkTemplates.h"
-#include "SkTSet.h"
#include "SkTypes.h"
static bool inverse_transform_bbox(const SkMatrix& matrix, SkRect* bbox) {
SkPDFFunctionShader::SkPDFFunctionShader(SkPDFShader::State* state)
: SkPDFDict("Pattern"), fShaderState(state) {}
-SkPDFFunctionShader::~SkPDFFunctionShader() {
- fResources.unrefAll();
-}
+SkPDFFunctionShader::~SkPDFFunctionShader() {}
bool SkPDFFunctionShader::equals(const SkPDFShader::State& state) const {
return state == *fShaderState;
return state == *fShaderState;
}
-SkPDFImageShader::~SkPDFImageShader() {
- fResources.unrefAll();
-}
+SkPDFImageShader::~SkPDFImageShader() {}
////////////////////////////////////////////////////////////////////////////////
}
static void populate_tiling_pattern_dict(SkPDFDict* pattern,
- SkRect& bbox, SkPDFDict* resources,
- const SkMatrix& matrix) {
+ SkRect& bbox,
+ SkPDFDict* resources,
+ const SkMatrix& matrix) {
const int kTiling_PatternType = 1;
const int kColoredTilingPattern_PaintType = 1;
const int kConstantSpacing_TilingType = 1;
SkAutoTDelete<SkPDFShader::State> opaqueState(state.CreateOpaqueState());
- SkPDFObject* colorShader =
- get_pdf_shader_by_state(canon, dpi, &opaqueState);
+ SkAutoTUnref<SkPDFObject> colorShader(
+ get_pdf_shader_by_state(canon, dpi, &opaqueState));
if (!colorShader) {
return NULL;
}
SkPDFAlphaFunctionShader* alphaFunctionShader =
SkNEW_ARGS(SkPDFAlphaFunctionShader, (autoState->detach()));
- alphaFunctionShader->fColorShader.reset(colorShader);
-
- alphaFunctionShader->fResourceDict.reset(get_gradient_resource_dict(
- alphaFunctionShader->fColorShader.get(), alphaGs.get()));
+ SkAutoTUnref<SkPDFResourceDict> resourceDict(
+ get_gradient_resource_dict(colorShader.get(), alphaGs.get()));
SkAutoTDelete<SkStream> colorStream(
create_pattern_fill_content(0, bbox));
alphaFunctionShader->setData(colorStream.get());
- populate_tiling_pattern_dict(alphaFunctionShader, bbox,
- alphaFunctionShader->fResourceDict.get(),
+ populate_tiling_pattern_dict(alphaFunctionShader, bbox, resourceDict.get(),
SkMatrix::I());
canon->addAlphaShader(alphaFunctionShader);
return alphaFunctionShader;
SkPDFFunctionShader* pdfFunctionShader =
SkNEW_ARGS(SkPDFFunctionShader, (autoState->detach()));
- pdfFunctionShader->fResources.push(function);
- // Pass ownership to resource list.
-
pdfFunctionShader->insertInt("PatternType", 2);
pdfFunctionShader->insert("Matrix", matrixArray.get());
pdfFunctionShader->insert("Shading", pdfShader.get());
private:
SkAutoTDelete<const SkPDFShader::State> fShaderState;
- SkTDArray<SkPDFObject*> fResources;
SkPDFFunctionShader(SkPDFShader::State*);
typedef SkPDFDict INHERITED;
};
private:
SkAutoTDelete<const SkPDFShader::State> fShaderState;
- SkAutoTUnref<SkPDFObject> fColorShader;
- SkAutoTUnref<SkPDFResourceDict> fResourceDict;
SkPDFAlphaFunctionShader(SkPDFShader::State*);
+ typedef SkPDFStream INHERITED;
};
class SkPDFImageShader : public SkPDFStream {
private:
SkAutoTDelete<const SkPDFShader::State> fShaderState;
- SkTSet<SkPDFObject*> fResources;
SkPDFImageShader(SkPDFShader::State*);
+ typedef SkPDFStream INHERITED;
};
#endif