public:
BlurRectSeparableBench(SkScalar rad) : INHERITED(rad) { }
- ~BlurRectSeparableBench() {
+ ~BlurRectSeparableBench() override {
SkMask::FreeImage(fSrcMask.fImage);
}
public:
// Constructor takes ownership of the GM param.
GMBench(skiagm::GM* gm);
- virtual ~GMBench();
+ ~GMBench() override;
protected:
const char* onGetName() override;
class PDFImageBench : public Benchmark {
public:
PDFImageBench() {}
- virtual ~PDFImageBench() {}
+ ~PDFImageBench() override {}
protected:
const char* onGetName() override { return "PDFImage"; }
class PDFJpegImageBench : public Benchmark {
public:
PDFJpegImageBench() {}
- virtual ~PDFJpegImageBench() {}
+ ~PDFJpegImageBench() override {}
protected:
const char* onGetName() override { return "PDFJpegImage"; }
class PDFCompressionBench : public Benchmark {
public:
PDFCompressionBench() {}
- virtual ~PDFCompressionBench() {}
+ ~PDFCompressionBench() override {}
protected:
const char* onGetName() override { return "PDFCompression"; }
, fBench(nullptr)
, fConfig(nullptr) {}
- ~NanoJSONResultsWriter() {
+ ~NanoJSONResultsWriter() override {
this->flush();
}
fPaint.setColor(color);
}
- virtual ~TextBench() {
+ ~TextBench() override {
delete[] fPos;
}
std::move(permutationsProxy), std::move(noiseProxy), matrix));
}
- virtual ~GrPerlinNoise2Effect() { delete fPaintingData; }
+ ~GrPerlinNoise2Effect() override { delete fPaintingData; }
const char* name() const override { return "PerlinNoise"; }
std::move(gradientProxy), matrix));
}
- virtual ~GrImprovedPerlinNoiseEffect() { delete fPaintingData; }
+ ~GrImprovedPerlinNoiseEffect() override { delete fPaintingData; }
const char* name() const override { return "ImprovedPerlinNoise"; }
class PerlinNoiseShaderContext : public SkShader::Context {
public:
PerlinNoiseShaderContext(const SkPerlinNoiseShader2& shader, const ContextRec&);
- virtual ~PerlinNoiseShaderContext();
+ ~PerlinNoiseShaderContext() override;
void shadeSpan(int x, int y, SkPMColor[], int count) override;
SkPerlinNoiseShader2(SkPerlinNoiseShader2::Type type, SkScalar baseFrequencyX,
SkScalar baseFrequencyY, int numOctaves, SkScalar seed,
const SkISize* tileSize);
- virtual ~SkPerlinNoiseShader2();
+ ~SkPerlinNoiseShader2() override;
const SkPerlinNoiseShader2::Type fType;
const SkScalar fBaseFrequencyX;
class SkSVGCircle final : public SkSVGShape {
public:
- virtual ~SkSVGCircle() = default;
+ ~SkSVGCircle() override = default;
static sk_sp<SkSVGCircle> Make() { return sk_sp<SkSVGCircle>(new SkSVGCircle()); }
void setCx(const SkSVGLength&);
class SkSVGContainer : public SkSVGTransformableNode {
public:
- virtual ~SkSVGContainer() = default;
+ ~SkSVGContainer() override = default;
void appendChild(sk_sp<SkSVGNode>) override;
class SkSVGEllipse final : public SkSVGShape {
public:
- virtual ~SkSVGEllipse() = default;
+ ~SkSVGEllipse() override = default;
static sk_sp<SkSVGEllipse> Make() { return sk_sp<SkSVGEllipse>(new SkSVGEllipse()); }
void setCx(const SkSVGLength&);
class SkSVGLine final : public SkSVGShape {
public:
- virtual ~SkSVGLine() = default;
+ ~SkSVGLine() override = default;
static sk_sp<SkSVGLine> Make() { return sk_sp<SkSVGLine>(new SkSVGLine()); }
void setX1(const SkSVGLength&);
class SkSVGLinearGradient : public SkSVGHiddenContainer {
public:
- virtual ~SkSVGLinearGradient() = default;
+ ~SkSVGLinearGradient() override = default;
static sk_sp<SkSVGLinearGradient> Make() {
return sk_sp<SkSVGLinearGradient>(new SkSVGLinearGradient());
}
class SkSVGPath final : public SkSVGShape {
public:
- virtual ~SkSVGPath() = default;
+ ~SkSVGPath() override = default;
static sk_sp<SkSVGPath> Make() { return sk_sp<SkSVGPath>(new SkSVGPath()); }
void setPath(const SkPath& path) { fPath = path; }
// Handles <polygon> and <polyline> elements.
class SkSVGPoly final : public SkSVGShape {
public:
- virtual ~SkSVGPoly() = default;
+ ~SkSVGPoly() override = default;
static sk_sp<SkSVGPoly> MakePolygon() {
return sk_sp<SkSVGPoly>(new SkSVGPoly(SkSVGTag::kPolygon));
class SkSVGRect final : public SkSVGShape {
public:
- virtual ~SkSVGRect() = default;
+ ~SkSVGRect() override = default;
static sk_sp<SkSVGRect> Make() { return sk_sp<SkSVGRect>(new SkSVGRect()); }
void setX(const SkSVGLength&);
class SkSVGSVG : public SkSVGContainer {
public:
- virtual ~SkSVGSVG() = default;
+ ~SkSVGSVG() override = default;
static sk_sp<SkSVGSVG> Make() { return sk_sp<SkSVGSVG>(new SkSVGSVG()); }
class SkSVGShape : public SkSVGTransformableNode {
public:
- virtual ~SkSVGShape() = default;
+ ~SkSVGShape() override = default;
void appendChild(sk_sp<SkSVGNode>) override;
class SkSVGStop : public SkSVGHiddenContainer {
public:
- virtual ~SkSVGStop() = default;
+ ~SkSVGStop() override = default;
static sk_sp<SkSVGStop> Make() {
return sk_sp<SkSVGStop>(new SkSVGStop());
}
class SkSVGTransformableNode : public SkSVGNode {
public:
- virtual ~SkSVGTransformableNode() = default;
+ ~SkSVGTransformableNode() override = default;
void setTransform(const SkSVGTransformType& t) { fTransform = t; }
fDoRotate = doRotate;
}
- virtual ~GiantBitmapGM() { delete fBM; }
+ ~GiantBitmapGM() override { delete fBM; }
protected:
fSize.set(SkIntToScalar(W), SkIntToScalar(H));
}
- virtual ~ImageGM() {
+ ~ImageGM() override {
sk_free(fBuffer);
}
}
}
- virtual ~MultiPictureDraw() {
+ ~MultiPictureDraw() override {
for (int i = 0; i < kNumPictures; ++i) {
SkSafeUnref(fPictures[i]);
}
SkImageFilter(sk_sp<SkImageFilter>* inputs, int inputCount, const CropRect* cropRect);
- virtual ~SkImageFilter();
+ ~SkImageFilter() override;
/**
* Constructs a new SkImageFilter read from an SkReadBuffer object.
// The ownPixels version of this constructor is deprecated.
SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*,
bool ownPixels);
- virtual ~SkMallocPixelRef();
+ ~SkMallocPixelRef() override;
bool onNewLockPixels(LockRec*) override;
void onUnlockPixels() override;
class SK_API SkShader : public SkFlattenable {
public:
SkShader(const SkMatrix* localMatrix = NULL);
- virtual ~SkShader();
+ ~SkShader() override;
/**
* Returns the local matrix.
*/
explicit SkFILEStream(FILE* file);
- virtual ~SkFILEStream();
+ ~SkFILEStream() override;
/** Returns true if the current path could be opened. */
bool isValid() const { return fFILE != nullptr; }
class SK_API SkFILEWStream : public SkWStream {
public:
SkFILEWStream(const char path[]);
- virtual ~SkFILEWStream();
+ ~SkFILEWStream() override;
/** Returns true if the current path could be opened.
*/
class SK_API SkDynamicMemoryWStream : public SkWStream {
public:
SkDynamicMemoryWStream();
- virtual ~SkDynamicMemoryWStream();
+ ~SkDynamicMemoryWStream() override;
bool write(const void* buffer, size_t size) override;
size_t bytesWritten() const override;
SkBinaryWriteBuffer(uint32_t flags = 0);
SkBinaryWriteBuffer(void* initialStorage, size_t storageSize, uint32_t flags = 0);
- ~SkBinaryWriteBuffer();
+ ~SkBinaryWriteBuffer() override;
bool isCrossProcess() const override {
return SkToBool(fFlags & kCrossProcess_Flag);
#endif
protected:
- virtual ~SkCornerPathEffect();
+ ~SkCornerPathEffect() override;
explicit SkCornerPathEffect(SkScalar radius);
void flatten(SkWriteBuffer&) const override;
#endif
protected:
- virtual ~SkDashPathEffect();
+ ~SkDashPathEffect() override;
SkDashPathEffect(const SkScalar intervals[], int count, SkScalar phase);
void flatten(SkWriteBuffer&) const override;
class SK_API SkLayerDrawLooper : public SkDrawLooper {
public:
- virtual ~SkLayerDrawLooper();
+ ~SkLayerDrawLooper() override;
/**
* Bits specifies which aspects of the layer's paint should replace the
class SK_API SkLayerRasterizer : public SkRasterizer {
public:
- virtual ~SkLayerRasterizer();
+ ~SkLayerRasterizer() override;
class SK_API Builder {
public:
class PerlinNoiseShaderContext : public SkShader::Context {
public:
PerlinNoiseShaderContext(const SkPerlinNoiseShader& shader, const ContextRec&);
- virtual ~PerlinNoiseShaderContext();
+ ~PerlinNoiseShaderContext() override;
void shadeSpan(int x, int y, SkPMColor[], int count) override;
SkPerlinNoiseShader(SkPerlinNoiseShader::Type type, SkScalar baseFrequencyX,
SkScalar baseFrequencyY, int numOctaves, SkScalar seed,
const SkISize* tileSize);
- virtual ~SkPerlinNoiseShader();
+ ~SkPerlinNoiseShader() override;
const SkPerlinNoiseShader::Type fType;
const SkScalar fBaseFrequencyX;
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTableMaskFilter)
protected:
- virtual ~SkTableMaskFilter();
+ ~SkTableMaskFilter() override;
void flatten(SkWriteBuffer&) const override;
/** Destruct, asserting that the weak reference count is 1.
*/
- virtual ~SkWeakRefCnt() {
+ ~SkWeakRefCnt() override {
#ifdef SK_DEBUG
SkASSERT(getWeakCnt() == 1);
fWeakCnt.store(0, std::memory_order_relaxed);
class Dumper;
explicit SkDumpCanvas(Dumper* = 0);
- virtual ~SkDumpCanvas();
+ ~SkDumpCanvas() override;
enum Verb {
kNULL_Verb,
void pushThis();
SkLuaCanvas(int width, int height, lua_State*, const char function[]);
- virtual ~SkLuaCanvas();
+ ~SkLuaCanvas() override;
protected:
void willSave() override;
class SK_API SkNWayCanvas : public SkNoDrawCanvas {
public:
SkNWayCanvas(int width, int height);
- virtual ~SkNWayCanvas();
+ ~SkNWayCanvas() override;
virtual void addCanvas(SkCanvas*);
virtual void removeCanvas(SkCanvas*);
class SkOSWindow : public SkWindow {
public:
SkOSWindow(void*);
- ~SkOSWindow();
+ ~SkOSWindow() override;
void* getHWND() const { return (void*)fUnixWindow.fWin; }
void* getDisplay() const { return (void*)fUnixWindow.fDisplay; }
public:
GMSampleView(GM*);
- virtual ~GMSampleView();
+ ~GMSampleView() override;
static SkEvent* NewShowSizeEvt(bool doShowSize);
class OverView : public SkView {
public:
OverView(int count, const SkViewFactory* factories[]);
- virtual ~OverView();
+ ~OverView() override;
protected:
bool onEvent(const SkEvent&) override;
fBackend = kNone_BackEndType;
}
- virtual ~DefaultDeviceManager() {
+ ~DefaultDeviceManager() override {
#if SK_SUPPORT_GPU
SkSafeUnref(fCurContext);
SkSafeUnref(fCurIntf);
};
SampleWindow(void* hwnd, int argc, char** argv, DeviceManager*);
- virtual ~SampleWindow();
+ ~SampleWindow() override;
sk_sp<SkSurface> makeSurface() override {
sk_sp<SkSurface> surface;
, fBackMatrices(kNumPaths) {
}
- ~MovingPathText() {
+ ~MovingPathText() override {
fBackgroundAnimationTask.wait();
}
: fFrontPaths(kNumPaths)
, fBackPaths(kNumPaths) {}
- ~WavyPathText() {
+ ~WavyPathText() override {
fBackgroundAnimationTask.wait();
}
public:
SVGFileView(const SkString& path)
: fPath(path), fLabel(SkStringPrintf("[%s]", SkOSPath::Basename(path.c_str()).c_str())) {}
- virtual ~SVGFileView() = default;
+ ~SVGFileView() override = default;
protected:
void onOnceBeforeDraw() override {
// Assume IsPng was called and returned true.
static SkCodec* NewFromStream(SkStream*, SkPngChunkReader* = NULL);
- virtual ~SkPngCodec();
+ ~SkPngCodec() override;
protected:
// We hold the png_ptr and info_ptr as voidp to avoid having to include png.h
explicit SkRawAdapterCodec(SkRawCodec*);
- virtual ~SkRawAdapterCodec() {}
+ ~SkRawAdapterCodec() override {}
protected:
class SkRawLimitedDynamicMemoryWStream : public SkDynamicMemoryWStream {
public:
- virtual ~SkRawLimitedDynamicMemoryWStream() {}
+ ~SkRawLimitedDynamicMemoryWStream() override {}
bool write(const void* buffer, size_t size) override {
size_t newSize;
explicit SkSampledCodec(SkCodec*);
- virtual ~SkSampledCodec() {}
+ ~SkSampledCodec() override {}
protected:
explicit SkWebpAdapterCodec(SkWebpCodec*);
- virtual ~SkWebpAdapterCodec() {}
+ ~SkWebpAdapterCodec() override {}
protected:
class SkAAClipBlitter : public SkBlitter {
public:
SkAAClipBlitter() : fScanlineScratch(nullptr) {}
- virtual ~SkAAClipBlitter();
+ ~SkAAClipBlitter() override;
void init(SkBlitter* blitter, const SkAAClip* aaclip) {
SkASSERT(aaclip && !aaclip->isEmpty());
fMipMap->attachToCacheAndRef();
}
- virtual ~MipMapRec() {
+ ~MipMapRec() override {
fMipMap->detachFromCacheAndUnref();
}
}
}
- virtual ~Sk3DShaderContext() {
+ ~Sk3DShaderContext() override {
if (fProxyContext) {
fProxyContext->~Context();
}
public:
SkRGB16_Shader_Blitter(const SkPixmap& device, const SkPaint& paint,
SkShader::Context* shaderContext);
- virtual ~SkRGB16_Shader_Blitter();
+ ~SkRGB16_Shader_Blitter() override;
void blitH(int x, int y, int width) override;
virtual void blitAntiH(int x, int y, const SkAlpha* antialias,
const int16_t* runs) override;
public:
SkRGB16_Shader_Xfermode_Blitter(const SkPixmap& device, const SkPaint& paint,
SkShader::Context* shaderContext);
- virtual ~SkRGB16_Shader_Xfermode_Blitter();
+ ~SkRGB16_Shader_Xfermode_Blitter() override;
void blitH(int x, int y, int width) override;
virtual void blitAntiH(int x, int y, const SkAlpha* antialias,
const int16_t* runs) override;
public:
SkA8_Shader_Blitter(const SkPixmap& device, const SkPaint& paint,
SkShader::Context* shaderContext);
- virtual ~SkA8_Shader_Blitter();
+ ~SkA8_Shader_Blitter() override;
void blitH(int x, int y, int width) override;
void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]) override;
void blitMask(const SkMask&, const SkIRect&) override;
public:
SkARGB32_Shader_Blitter(const SkPixmap& device, const SkPaint& paint,
SkShader::Context* shaderContext);
- virtual ~SkARGB32_Shader_Blitter();
+ ~SkARGB32_Shader_Blitter() override;
void blitH(int x, int y, int width) override;
void blitV(int x, int y, int height, SkAlpha alpha) override;
void blitRect(int x, int y, int width, int height) override;
class TriColorShaderContext : public SkShader::Context {
public:
TriColorShaderContext(const SkTriColorShader& shader, const ContextRec&);
- virtual ~TriColorShaderContext();
+ ~TriColorShaderContext() override;
void shadeSpan(int x, int y, SkPMColor dstC[], int count) override;
private:
}
}
- ~SkThreadPool() {
+ ~SkThreadPool() override {
// Signal each thread that it's time to shut down.
for (int i = 0; i < fThreads.count(); i++) {
this->add(nullptr);
fValue.fData = data;
fValue.fData->attachToCacheAndRef();
}
- ~RRectBlurRec() {
+ ~RRectBlurRec() override {
fValue.fData->detachFromCacheAndUnref();
}
fValue.fData = data;
fValue.fData->attachToCacheAndRef();
}
- ~RectsBlurRec() {
+ ~RectsBlurRec() override {
fValue.fData->detachFromCacheAndUnref();
}
public:
Provider();
- virtual ~Provider();
+ ~Provider() override;
void fillScanLine(int x, int y, SkPoint3 output[], int count) const override;
public:
Provider();
- virtual ~Provider();
+ ~Provider() override;
void fillScanLine(int x, int y, SkPoint3 output[], int count) const override;
class SkPictureRecord : public SkCanvas {
public:
SkPictureRecord(const SkISize& dimensions, uint32_t recordFlags);
- virtual ~SkPictureRecord();
+ ~SkPictureRecord() override;
const SkTDArray<const SkPicture* >& getPictureRefs() const {
return fPictureRefs;
* create better proportioned tiles of rectangles.
*/
explicit SkRTree(SkScalar aspectRatio = 1);
- virtual ~SkRTree() {}
+ ~SkRTree() override {}
void insert(const SkRect[], int N) override;
void search(const SkRect& query, SkTDArray<int>* results) const override;
fGlobalOffset = fLocalOffset = 0;
}
- virtual ~SkROBufferStreamAsset() { fBuffer->unref(); }
+ ~SkROBufferStreamAsset() override { fBuffer->unref(); }
size_t getLength() const override { return fBuffer->size(); }
class SkRgnBuilder : public SkBlitter {
public:
SkRgnBuilder();
- virtual ~SkRgnBuilder();
+ ~SkRgnBuilder() override;
// returns true if it could allocate the working storage needed
bool init(int maxHeight, int maxTransitions, bool pathIsInverse);
// The pixelref will ref() the colortable (if not NULL), and unref() in destructor
SkOneShotDiscardablePixelRef(const SkImageInfo&, SkDiscardableMemory*, size_t rowBytes,
SkColorTable*);
- ~SkOneShotDiscardablePixelRef();
+ ~SkOneShotDiscardablePixelRef() override;
protected:
bool onNewLockPixels(LockRec*) override;
class AdditiveBlitter : public SkBlitter {
public:
- virtual ~AdditiveBlitter() {}
+ ~AdditiveBlitter() override {}
virtual SkBlitter* getRealBlitter(bool forceRealBlitter = false) = 0;
public:
MaskAdditiveBlitter(SkBlitter* realBlitter, const SkIRect& ir, const SkRegion& clip,
bool isInverse);
- ~MaskAdditiveBlitter() {
+ ~MaskAdditiveBlitter() override {
fRealBlitter->blitMask(fMask, fClipRect);
}
public:
RunBasedAdditiveBlitter(SkBlitter* realBlitter, const SkIRect& ir, const SkRegion& clip,
bool isInverse);
- ~RunBasedAdditiveBlitter();
+ ~RunBasedAdditiveBlitter() override;
SkBlitter* getRealBlitter(bool forceRealBlitter) override;
public:
SuperBlitter(SkBlitter* realBlitter, const SkIRect& ir, const SkRegion& clip, bool isInverse);
- virtual ~SuperBlitter() {
+ ~SuperBlitter() override {
this->flush();
}
class MaskSuperBlitter : public BaseSuperBlitter {
public:
MaskSuperBlitter(SkBlitter* realBlitter, const SkIRect& ir, const SkRegion&, bool isInverse);
- virtual ~MaskSuperBlitter() {
+ ~MaskSuperBlitter() override {
fRealBlitter->blitMask(fMask, fClipRect);
}
fAlpha = paint.getAlpha();
}
- virtual ~Sprite_D32_XferFilter() {
+ ~Sprite_D32_XferFilter() override {
delete[] fBuffer;
SkSafeUnref(fColorFilter);
}
fValue.fInfo = *info;
fValue.fData->attachToCacheAndRef();
}
- ~YUVPlanesRec() {
+ ~YUVPlanesRec() override {
fValue.fData->detachFromCacheAndUnref();
}
colorDimensions));
}
- virtual ~GrDisplacementMapEffect();
+ ~GrDisplacementMapEffect() override;
SkDisplacementMapEffect::ChannelSelectorType xChannelSelector() const {
return fXChannelSelector;
1.0f - FLT_EPSILON);
}
- virtual ~SkHighContrast_Filter() { }
+ ~SkHighContrast_Filter() override {}
#if SK_SUPPORT_GPU
sk_sp<GrFragmentProcessor> asFragmentProcessor(GrContext*, SkColorSpace*) const override;
class GrGLDistantLight : public GrGLLight {
public:
- virtual ~GrGLDistantLight() {}
+ ~GrGLDistantLight() override {}
void setData(const GrGLSLProgramDataManager&, const SkImageFilterLight* light) const override;
void emitSurfaceToLight(GrGLSLUniformHandler*, GrGLSLFPFragmentBuilder*, const char* z) override;
class GrGLPointLight : public GrGLLight {
public:
- virtual ~GrGLPointLight() {}
+ ~GrGLPointLight() override {}
void setData(const GrGLSLProgramDataManager&, const SkImageFilterLight* light) const override;
void emitSurfaceToLight(GrGLSLUniformHandler*, GrGLSLFPFragmentBuilder*, const char* z) override;
class GrGLSpotLight : public GrGLLight {
public:
- virtual ~GrGLSpotLight() {}
+ ~GrGLSpotLight() override {}
void setData(const GrGLSLProgramDataManager&, const SkImageFilterLight* light) const override;
void emitSurfaceToLight(GrGLSLUniformHandler*, GrGLSLFPFragmentBuilder*, const char* z) override;
void emitLightColor(GrGLSLUniformHandler*,
class SkImageFilterLight : public SkRefCnt {
public:
-
-
enum LightType {
kDistant_LightType,
kPoint_LightType,
class GrGLLightingEffect : public GrGLSLFragmentProcessor {
public:
GrGLLightingEffect() : fLight(nullptr) { }
- virtual ~GrGLLightingEffect() { delete fLight; }
+ ~GrGLLightingEffect() override { delete fLight; }
void emitCode(EmitArgs&) override;
std::move(permutationsProxy), std::move(noiseProxy), matrix));
}
- virtual ~GrPerlinNoiseEffect() { delete fPaintingData; }
+ ~GrPerlinNoiseEffect() override { delete fPaintingData; }
const char* name() const override { return "PerlinNoise"; }
}
}
- virtual ~SkTable_ColorFilter() { delete fBitmap; }
+ ~SkTable_ColorFilter() override { delete fBitmap; }
bool asComponentTable(SkBitmap* table) const override;
sk_sp<SkColorFilter> makeComposed(sk_sp<SkColorFilter> inner) const override;
};
SkGradientShaderBase(const Descriptor& desc, const SkMatrix& ptsToUnit);
- virtual ~SkGradientShaderBase();
+ ~SkGradientShaderBase() override;
// The cache is initialized on-demand when getCache32 is called.
class GradientShaderCache : public SkRefCnt {
class GLSLProcessor;
- virtual ~GrGradientEffect();
+ ~GrGradientEffect() override;
bool useAtlas() const { return SkToBool(-1 != fRow); }
SkScalar getYCoord() const { return fYCoord; }
return sk_sp<GrFragmentProcessor>(new GrLinearGradient(args));
}
- virtual ~GrLinearGradient() { }
+ ~GrLinearGradient() override {}
const char* name() const override { return "Linear Gradient"; }
public:
GLSLLinearProcessor(const GrProcessor&) {}
- virtual ~GLSLLinearProcessor() { }
+ ~GLSLLinearProcessor() override {}
virtual void emitCode(EmitArgs&) override;
return sk_sp<GrFragmentProcessor>(new GrRadialGradient(args));
}
- virtual ~GrRadialGradient() { }
+ ~GrRadialGradient() override {}
const char* name() const override { return "Radial Gradient"; }
class GrRadialGradient::GLSLRadialProcessor : public GrGradientEffect::GLSLProcessor {
public:
GLSLRadialProcessor(const GrProcessor&) {}
- virtual ~GLSLRadialProcessor() { }
+ ~GLSLRadialProcessor() override {}
virtual void emitCode(EmitArgs&) override;
static sk_sp<GrFragmentProcessor> Make(const CreateArgs& args) {
return sk_sp<GrFragmentProcessor>(new GrSweepGradient(args));
}
- virtual ~GrSweepGradient() { }
+ ~GrSweepGradient() override {}
const char* name() const override { return "Sweep Gradient"; }
class GrSweepGradient::GLSLSweepProcessor : public GrGradientEffect::GLSLProcessor {
public:
GLSLSweepProcessor(const GrProcessor&) {}
- virtual ~GLSLSweepProcessor() { }
+ ~GLSLSweepProcessor() override {}
virtual void emitCode(EmitArgs&) override;
class TwoPointConicalGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
public:
TwoPointConicalGradientContext(const SkTwoPointConicalGradient&, const ContextRec&);
- ~TwoPointConicalGradientContext() {}
+ ~TwoPointConicalGradientContext() override {}
void shadeSpan(int x, int y, SkPMColor dstC[], int count) override;
return sk_sp<GrFragmentProcessor>(new Edge2PtConicalEffect(args));
}
- virtual ~Edge2PtConicalEffect() {}
+ ~Edge2PtConicalEffect() override {}
const char* name() const override {
return "Two-Point Conical Gradient Edge Touching";
class Edge2PtConicalEffect::GLSLEdge2PtConicalProcessor : public GrGradientEffect::GLSLProcessor {
public:
GLSLEdge2PtConicalProcessor(const GrProcessor&);
- virtual ~GLSLEdge2PtConicalProcessor() { }
+ ~GLSLEdge2PtConicalProcessor() override {}
virtual void emitCode(EmitArgs&) override;
new FocalOutside2PtConicalEffect(args, focalX));
}
- virtual ~FocalOutside2PtConicalEffect() { }
+ ~FocalOutside2PtConicalEffect() override {}
const char* name() const override {
return "Two-Point Conical Gradient Focal Outside";
: public GrGradientEffect::GLSLProcessor {
public:
GLSLFocalOutside2PtConicalProcessor(const GrProcessor&);
- virtual ~GLSLFocalOutside2PtConicalProcessor() { }
+ ~GLSLFocalOutside2PtConicalProcessor() override {}
virtual void emitCode(EmitArgs&) override;
new FocalInside2PtConicalEffect(args, focalX));
}
- virtual ~FocalInside2PtConicalEffect() {}
+ ~FocalInside2PtConicalEffect() override {}
const char* name() const override {
return "Two-Point Conical Gradient Focal Inside";
: public GrGradientEffect::GLSLProcessor {
public:
GLSLFocalInside2PtConicalProcessor(const GrProcessor&);
- virtual ~GLSLFocalInside2PtConicalProcessor() {}
+ ~GLSLFocalInside2PtConicalProcessor() override {}
virtual void emitCode(EmitArgs&) override;
new CircleInside2PtConicalEffect(args, info));
}
- virtual ~CircleInside2PtConicalEffect() {}
+ ~CircleInside2PtConicalEffect() override {}
const char* name() const override { return "Two-Point Conical Gradient Inside"; }
: public GrGradientEffect::GLSLProcessor {
public:
GLSLCircleInside2PtConicalProcessor(const GrProcessor&);
- virtual ~GLSLCircleInside2PtConicalProcessor() {}
+ ~GLSLCircleInside2PtConicalProcessor() override {}
virtual void emitCode(EmitArgs&) override;
new CircleOutside2PtConicalEffect(args, info));
}
- virtual ~CircleOutside2PtConicalEffect() {}
+ ~CircleOutside2PtConicalEffect() override {}
const char* name() const override { return "Two-Point Conical Gradient Outside"; }
: public GrGradientEffect::GLSLProcessor {
public:
GLSLCircleOutside2PtConicalProcessor(const GrProcessor&);
- virtual ~GLSLCircleOutside2PtConicalProcessor() {}
+ ~GLSLCircleOutside2PtConicalProcessor() override {}
virtual void emitCode(EmitArgs&) override;
this->reset();
}
- virtual ~GrRectanizerPow2() { }
+ ~GrRectanizerPow2() override {}
void reset() override {
fNextStripY = 0;
}
}
- virtual ~GrConicEffect();
+ ~GrConicEffect() override;
const char* name() const override { return "Conic"; }
}
}
- virtual ~GrQuadEffect();
+ ~GrQuadEffect() override;
const char* name() const override { return "Quad"; }
}
}
- virtual ~GrCubicEffect();
+ ~GrCubicEffect() override;
const char* name() const override { return "Cubic"; }
kFilterTexelPad = 2, // Given a src rect in texels to be filtered, this number of
// surrounding texels are needed by the kernel in x and y.
};
- virtual ~GrBicubicEffect();
+ ~GrBicubicEffect() override;
const char* name() const override { return "Bicubic"; }
localMatrix, usesLocalCoords));
}
- virtual ~GrBitmapTextGeoProc() {}
+ ~GrBitmapTextGeoProc() override {}
const char* name() const override { return "Texture"; }
*/
static sk_sp<GrFragmentProcessor> Make(GrPrimitiveEdgeType, const SkRect&);
- virtual ~GrConvexPolyEffect();
+ ~GrConvexPolyEffect() override;
const char* name() const override { return "ConvexPoly"; }
}
#endif
- virtual ~GrDistanceFieldA8TextGeoProc() {}
+ ~GrDistanceFieldA8TextGeoProc() override {}
const char* name() const override { return "DistanceFieldA8Text"; }
return sk_sp<GrFragmentProcessor>(new DitherEffect);
}
- virtual ~DitherEffect() {}
+ ~DitherEffect() override {}
const char* name() const override { return "Dither"; }
static sk_sp<GrFragmentProcessor> Make(GrPrimitiveEdgeType, const SkPoint& center,
SkScalar radius);
- virtual ~CircleEffect() {}
+ ~CircleEffect() override {}
const char* name() const override { return "Circle"; }
static sk_sp<GrFragmentProcessor> Make(GrPrimitiveEdgeType, const SkPoint& center,
SkScalar rx, SkScalar ry);
- virtual ~EllipseEffect() {}
+ ~EllipseEffect() override {}
const char* name() const override { return "Ellipse"; }
public:
GLPDLCDXferProcessor(const GrProcessor&) : fLastAlpha(SK_MaxU32) {}
- virtual ~GLPDLCDXferProcessor() {}
+ ~GLPDLCDXferProcessor() override {}
static void GenKey(const GrProcessor& processor, const GrShaderCaps& caps,
GrProcessorKeyBuilder* b) {}
static sk_sp<GrFragmentProcessor> Make(GrPrimitiveEdgeType, uint32_t circularCornerFlags,
const SkRRect&);
- virtual ~CircularRRectEffect() {}
+ ~CircularRRectEffect() override {}
const char* name() const override { return "CircularRRect"; }
public:
static sk_sp<GrFragmentProcessor> Make(GrPrimitiveEdgeType, const SkRRect&);
- virtual ~EllipticalRRectEffect() {}
+ ~EllipticalRRectEffect() override {}
const char* name() const override { return "EllipticalRRect"; }
matrix, p));
}
- virtual ~GrSimpleTextureEffect() {}
+ ~GrSimpleTextureEffect() override {}
const char* name() const override { return "SimpleTexture"; }
static GrGLBuffer* Create(GrGLGpu*, size_t size, GrBufferType intendedType, GrAccessPattern,
const void* data = nullptr);
- ~GrGLBuffer() {
+ ~GrGLBuffer() override {
// either release or abandon should have been called by the owner of this object.
SkASSERT(0 == fBufferID);
}
public:
GrGLGpuCommandBuffer(GrGLGpu* gpu) : fGpu(gpu), fRenderTarget(nullptr) {}
- virtual ~GrGLGpuCommandBuffer() {}
+ ~GrGLGpuCommandBuffer() override {}
void end() override {}
* Create a new GrGLPathRendering object from a given GrGLGpu.
*/
GrGLPathRendering(GrGLGpu* gpu);
- virtual ~GrGLPathRendering();
+ ~GrGLPathRendering() override;
// GrPathRendering implementations.
GrPath* createPath(const SkPath&, const GrStyle&) override;
return sk_sp<GrGeometryProcessor>(new QuadEdgeEffect(color, localMatrix, usesLocalCoords));
}
- virtual ~QuadEdgeEffect() {}
+ ~QuadEdgeEffect() override {}
const char* name() const override { return "QuadEdge"; }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
- virtual ~RectGeometryProcessor() {}
+ ~RectGeometryProcessor() override {}
const char* name() const override { return "RectEdge"; }
return new MSAAQuadProcessor(viewMatrix);
}
- virtual ~MSAAQuadProcessor() {}
+ ~MSAAQuadProcessor() override {}
const char* name() const override { return "MSAAQuadProcessor"; }
bool implementsDistanceVector() const override { return !fInClipPlane; }
- virtual ~CircleGeometryProcessor() {}
+ ~CircleGeometryProcessor() override {}
const char* name() const override { return "CircleEdge"; }
fStroke = stroke;
}
- virtual ~EllipseGeometryProcessor() {}
+ ~EllipseGeometryProcessor() override {}
const char* name() const override { return "EllipseEdge"; }
fStyle = style;
}
- virtual ~DIEllipseGeometryProcessor() {}
+ ~DIEllipseGeometryProcessor() override {}
const char* name() const override { return "DIEllipseEdge"; }
class GrSmallPathRenderer : public GrPathRenderer {
public:
GrSmallPathRenderer();
- virtual ~GrSmallPathRenderer();
+ ~GrSmallPathRenderer() override;
private:
StencilSupport onGetStencilSupport(const GrShape&) const override {
const LoadAndStoreInfo& colorInfo,
const LoadAndStoreInfo& stencilInfo);
- virtual ~GrVkGpuCommandBuffer();
+ ~GrVkGpuCommandBuffer() override;
void end() override;
}
SkImage_Raster(const SkImageInfo&, sk_sp<SkData>, size_t rb, SkColorTable*);
- virtual ~SkImage_Raster();
+ ~SkImage_Raster() override;
SkImageInfo onImageInfo() const override {
return fBitmap.info();
class SkSurface_Gpu : public SkSurface_Base {
public:
SkSurface_Gpu(sk_sp<SkGpuDevice>);
- virtual ~SkSurface_Gpu();
+ ~SkSurface_Gpu() override;
GrBackendObject onGetTextureHandle(BackendHandleAccess) override;
bool onGetRenderTargetHandle(GrBackendObject*, BackendHandleAccess) override;
* Without mutex, will be not be thread safe.
*/
DiscardableMemoryPool(size_t budget, SkBaseMutex* mutex = nullptr);
- virtual ~DiscardableMemoryPool();
+ ~DiscardableMemoryPool() override;
SkDiscardableMemory* create(size_t bytes) override;
public:
PoolDiscardableMemory(DiscardableMemoryPool* pool,
void* pointer, size_t bytes);
- virtual ~PoolDiscardableMemory();
+ ~PoolDiscardableMemory() override;
bool lock() override;
void* data() override;
void unlock() override;
bool gzip = false);
/** The destructor calls finalize(). */
- ~SkDeflateWStream();
+ ~SkDeflateWStream() override;
/** Write the end of the compressed stream. All subsequent calls to
write() will fail. Subsequent calls to finalize() do nothing. */
class SkPDFCanvas : public SkCanvas {
public:
SkPDFCanvas(const sk_sp<SkPDFDevice>&);
- ~SkPDFCanvas();
+ ~SkPDFCanvas() override;
protected:
void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override;
return new SkPDFDevice(pageSize, rasterDpi, doc, false);
}
- virtual ~SkPDFDevice();
+ ~SkPDFDevice() override;
/** These are called inside the per-device-layer loop for each draw call.
When these are called, we have already applied any saveLayer operations,
const SkDocument::PDFMetadata&,
sk_sp<SkPixelSerializer>,
bool);
- virtual ~SkPDFDocument();
+ ~SkPDFDocument() override;
SkCanvas* onBeginPage(SkScalar, SkScalar, const SkRect&) override;
void onEndPage() override;
void onClose(SkWStream*) override;
struct SkPDFType0Font final : public SkPDFFont {
SkPDFType0Font(SkPDFFont::Info, const SkAdvancedTypefaceMetrics&);
- virtual ~SkPDFType0Font();
+ ~SkPDFType0Font() override;
void getFontSubset(SkPDFCanon*) override;
#ifdef SK_DEBUG
void emitObject(SkWStream*, const SkPDFObjNumMap&) const override;
struct SkPDFType1Font final : public SkPDFFont {
SkPDFType1Font(SkPDFFont::Info, const SkAdvancedTypefaceMetrics&, SkPDFCanon*);
- virtual ~SkPDFType1Font() {}
+ ~SkPDFType1Font() override {}
void getFontSubset(SkPDFCanon*) override {} // TODO(halcanary): implement
};
struct SkPDFType3Font final : public SkPDFFont {
SkPDFType3Font(SkPDFFont::Info, const SkAdvancedTypefaceMetrics&);
- virtual ~SkPDFType3Font() {}
+ ~SkPDFType3Font() override {}
void getFontSubset(SkPDFCanon*) override;
};
class SkPDFFont : public SkPDFDict {
public:
- virtual ~SkPDFFont();
+ ~SkPDFFont() override;
/** Returns the typeface represented by this class. Returns nullptr for the
* default typeface.
/** Create a PDF array. Maximum length is 8191.
*/
SkPDFArray();
- virtual ~SkPDFArray();
+ ~SkPDFArray() override;
// The SkPDFObject interface.
void emitObject(SkWStream* stream,
*/
explicit SkPDFDict(const char type[] = nullptr);
- virtual ~SkPDFDict();
+ ~SkPDFDict() override;
// The SkPDFObject interface.
void emitObject(SkWStream* stream,
class SkPDFSharedStream final : public SkPDFObject {
public:
SkPDFSharedStream(std::unique_ptr<SkStreamAsset> data);
- ~SkPDFSharedStream();
+ ~SkPDFSharedStream() override;
SkPDFDict* dict() { return &fDict; }
void emitObject(SkWStream*,
const SkPDFObjNumMap&) const override;
* @param stream The data part of the stream. */
explicit SkPDFStream(sk_sp<SkData> data);
explicit SkPDFStream(std::unique_ptr<SkStreamAsset> stream);
- virtual ~SkPDFStream();
+ ~SkPDFStream() override;
SkPDFDict* dict() { return &fDict; }
SkScalerContext_FreeType(sk_sp<SkTypeface>,
const SkScalerContextEffects&,
const SkDescriptor* desc);
- virtual ~SkScalerContext_FreeType();
+ ~SkScalerContext_FreeType() override;
bool success() const {
return fFTSize != nullptr && fFace != nullptr;
return info;
}
- virtual ~SkTypeface_fontconfig() {
+ ~SkTypeface_fontconfig() override {
// Hold the lock while unrefing the pattern.
FCLocker lock;
fPattern.reset();
: fFontMgr(SkRef(parent)), fFontSet(fontSet)
{ }
- virtual ~StyleSet() {
+ ~StyleSet() override {
// Hold the lock while unrefing the font set.
FCLocker lock;
fFontSet.reset();
: fFC(config ? config : FcInitLoadConfigAndFonts())
, fFamilyNames(GetFamilyNames(fFC)) { }
- virtual ~SkFontMgr_fontconfig() {
+ ~SkFontMgr_fontconfig() override {
// Hold the lock while unrefing the config.
FCLocker lock;
fFC.reset();
public:
Compiler();
- ~Compiler();
+ ~Compiler() override;
std::unique_ptr<Program> convertProgram(Program::Kind kind, SkString text,
const Program::Settings& settings);
private:
SkSVGDevice(const SkISize& size, SkXMLWriter* writer);
- virtual ~SkSVGDevice();
+ ~SkSVGDevice() override;
struct MxCp;
void drawBitmapCommon(const MxCp&, const SkBitmap& bm, const SkPaint& paint);
class SkCanvasStack : public SkNWayCanvas {
public:
SkCanvasStack(int width, int height);
- virtual ~SkCanvasStack();
+ ~SkCanvasStack() override;
void pushCanvas(std::unique_ptr<SkCanvas>, const SkIPoint& origin);
void removeAll() override;
SkTArray<SkSize> fSizes;
MultiPictureDocument(SkWStream* s, void (*d)(SkWStream*, bool))
: SkDocument(s, d) {}
- ~MultiPictureDocument() { this->close(); }
+ ~MultiPictureDocument() override { this->close(); }
SkCanvas* onBeginPage(SkScalar w, SkScalar h, const SkRect& c) override {
fCurrentPageSize.set(w, h);
class SkXMLStreamWriter : public SkXMLWriter {
public:
SkXMLStreamWriter(SkWStream*);
- virtual ~SkXMLStreamWriter();
+ ~SkXMLStreamWriter() override;
void writeHeader() override;
protected:
class SkXMLParserWriter : public SkXMLWriter {
public:
SkXMLParserWriter(SkXMLParser*);
- virtual ~SkXMLParserWriter();
+ ~SkXMLParserWriter() override;
protected:
void onStartElementLen(const char elem[], size_t length) override;
void onEndElement() override;
: INHERITED(GetMyInfo(colorType)), fType(type), fReporter(reporter) {
SkASSERT((fType <= kLast_TestType) && (fType >= 0));
}
- virtual ~TestImageGenerator() { }
+ ~TestImageGenerator() override {}
protected:
static SkImageInfo GetMyInfo(SkColorType colorType) {
gCount++;
}
- ~DummyRasterizer() {
+ ~DummyRasterizer() override {
// Not threadsafe. Only used in one thread.
gCount--;
}
class ChangeListener : public SkPathRef::GenIDChangeListener {
public:
ChangeListener(bool *changed) : fChanged(changed) { *fChanged = false; }
- virtual ~ChangeListener() {}
+ ~ChangeListener() override {}
void onChange() override {
*fChanged = true;
}
class DrawEmptyPictureBBHTest : public PictureBBHTestBase {
public:
DrawEmptyPictureBBHTest()
- : PictureBBHTestBase(2, 2, 1, 1) { }
- virtual ~DrawEmptyPictureBBHTest() { }
+ : PictureBBHTestBase(2, 2, 1, 1) {}
+ ~DrawEmptyPictureBBHTest() override {}
- void doTest(SkCanvas&, SkCanvas&) override { }
+ void doTest(SkCanvas&, SkCanvas&) override {}
};
// Test to verify the playback of a picture into a canvas that has
class EmptyClipPictureBBHTest : public PictureBBHTestBase {
public:
EmptyClipPictureBBHTest()
- : PictureBBHTestBase(2, 2, 3, 3) { }
+ : PictureBBHTestBase(2, 2, 3, 3) {}
void doTest(SkCanvas& playbackCanvas, SkCanvas& recordingCanvas) override {
// intersect with out of bounds rect -> empty clip.
recordingCanvas.drawRect(SkRect::MakeWH(3, 3), paint);
}
- virtual ~EmptyClipPictureBBHTest() { }
+ ~EmptyClipPictureBBHTest() override {}
};
DEF_TEST(PictureBBH, reporter) {
class TestDrawLooperContext : public SkDrawLooper::Context {
public:
TestDrawLooperContext() : fOnce(true) {}
- virtual ~TestDrawLooperContext() {}
+ ~TestDrawLooperContext() override {}
bool next(SkCanvas* canvas, SkPaint*) override {
if (fOnce) {
return new TestResource(gpu, size);
}
- ~TestResource() {
+ ~TestResource() override {
--fNumAlive;
SkSafeUnref(fToDelete);
}
public:
SkDebugCanvas(int width, int height);
- virtual ~SkDebugCanvas();
+ ~SkDebugCanvas() override;
void toggleFilter(bool toggle) { fFilter = toggle; }
public:
SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint);
- virtual ~SkDrawPointsCommand() { delete [] fPts; }
+ ~SkDrawPointsCommand() override { delete [] fPts; }
void execute(SkCanvas* canvas) const override;
bool render(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
public:
SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y,
const SkPaint& paint);
- virtual ~SkDrawTextCommand() { delete [] fText; }
+ ~SkDrawTextCommand() override { delete [] fText; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
static SkDrawTextCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
public:
SkDrawPosTextCommand(const void* text, size_t byteLength, const SkPoint pos[],
const SkPaint& paint);
- virtual ~SkDrawPosTextCommand() { delete [] fPos; delete [] fText; }
+ ~SkDrawPosTextCommand() override { delete [] fPos; delete [] fText; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
static SkDrawPosTextCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
public:
SkDrawTextOnPathCommand(const void* text, size_t byteLength, const SkPath& path,
const SkMatrix* matrix, const SkPaint& paint);
- virtual ~SkDrawTextOnPathCommand() { delete [] fText; }
+ ~SkDrawTextOnPathCommand() override { delete [] fText; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
static SkDrawTextOnPathCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
public:
SkDrawPosTextHCommand(const void* text, size_t byteLength, const SkScalar xpos[],
SkScalar constY, const SkPaint& paint);
- virtual ~SkDrawPosTextHCommand() { delete [] fXpos; delete [] fText; }
+ ~SkDrawPosTextHCommand() override { delete [] fXpos; delete [] fText; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
static SkDrawPosTextHCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
class SkSaveLayerCommand : public SkDrawCommand {
public:
SkSaveLayerCommand(const SkCanvas::SaveLayerRec&);
- virtual ~SkSaveLayerCommand();
+ ~SkSaveLayerCommand() override;
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
static SkSaveLayerCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
*/
class GLTestContext : public TestContext {
public:
- virtual ~GLTestContext();
+ ~GLTestContext() override;
virtual GrBackend backend() override { return kOpenGL_GrBackend; }
virtual GrBackendContext backendContext() override {
, fSize(0)
, fUsage(GR_GL_STATIC_DRAW) {
}
- virtual ~GrBufferObj() {
+ ~GrBufferObj() override {
delete[] fDataPtr;
}
, fStencilBuffer(nullptr) {
}
- virtual ~GrFrameBufferObj() {
+ ~GrFrameBufferObj() override {
fColorBuffer = nullptr;
fDepthBuffer = nullptr;
fStencilBuffer = nullptr;
: GrFBBindableObj() {
}
- virtual ~GrTextureObj() {
+ ~GrTextureObj() override {
GrAlwaysAssert(0 == fTextureUnitReferees.count());
}