skia2/include/core/SkSurfaceProps.h
Ben Wagner 833313b21a Add back deprecated warnings.
Unfortunately in clang 'deprecated' is both a set of warnings (at least
one of which we don't want) and a group of warnings (most of which we do
want). Leave the top level disabled, but re-enable all the warnings in
the group.

Most of the code changes are for the deprecated-copy diagnostic. In
C++11 implementing a copy constructor xor copy assignment operator
the default implementation of the other is still required to be the
default but is deprecated (the compiler can warn against doing this).
The idea is that if there was a need for a non-default copy constructor
or copy assignment operator then both should be implemented explicitly,
since it is unlikely that the default will do what is expected.

Note that the deprecated-copy-dtor has not yet been enabled as there
will need to be a lot more work to enable this diagnostic. Similar to
deprecated-copy, in C++11 when implementing a destructor the copy
constructor and copy assignment operator are still defaulted if not
declared, but this is also deprecated. The idea here is that if some
special handling is needed to destroy the object there is probably some
need to do something non-trivial when copying the object (or copying
should be disallowed).

Also, there are still some deprecated-declarations to clean up on
Android and Mac.

Change-Id: I5fc4b62713220e6f7d3724fd7342b4c8c74a3c67
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/278916
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-03-27 14:18:49 +00:00

91 lines
2.7 KiB
C++

/*
* Copyright 2014 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkSurfaceProps_DEFINED
#define SkSurfaceProps_DEFINED
#include "include/core/SkTypes.h"
/**
* Description of how the LCD strips are arranged for each pixel. If this is unknown, or the
* pixels are meant to be "portable" and/or transformed before showing (e.g. rotated, scaled)
* then use kUnknown_SkPixelGeometry.
*/
enum SkPixelGeometry {
kUnknown_SkPixelGeometry,
kRGB_H_SkPixelGeometry,
kBGR_H_SkPixelGeometry,
kRGB_V_SkPixelGeometry,
kBGR_V_SkPixelGeometry,
};
// Returns true iff geo is a known geometry and is RGB.
static inline bool SkPixelGeometryIsRGB(SkPixelGeometry geo) {
return kRGB_H_SkPixelGeometry == geo || kRGB_V_SkPixelGeometry == geo;
}
// Returns true iff geo is a known geometry and is BGR.
static inline bool SkPixelGeometryIsBGR(SkPixelGeometry geo) {
return kBGR_H_SkPixelGeometry == geo || kBGR_V_SkPixelGeometry == geo;
}
// Returns true iff geo is a known geometry and is horizontal.
static inline bool SkPixelGeometryIsH(SkPixelGeometry geo) {
return kRGB_H_SkPixelGeometry == geo || kBGR_H_SkPixelGeometry == geo;
}
// Returns true iff geo is a known geometry and is vertical.
static inline bool SkPixelGeometryIsV(SkPixelGeometry geo) {
return kRGB_V_SkPixelGeometry == geo || kBGR_V_SkPixelGeometry == geo;
}
/**
* Describes properties and constraints of a given SkSurface. The rendering engine can parse these
* during drawing, and can sometimes optimize its performance (e.g. disabling an expensive
* feature).
*/
class SK_API SkSurfaceProps {
public:
enum Flags {
kUseDeviceIndependentFonts_Flag = 1 << 0,
};
/** Deprecated alias used by Chromium. Will be removed. */
static const Flags kUseDistanceFieldFonts_Flag = kUseDeviceIndependentFonts_Flag;
SkSurfaceProps(uint32_t flags, SkPixelGeometry);
enum InitType {
kLegacyFontHost_InitType
};
SkSurfaceProps(InitType);
SkSurfaceProps(uint32_t flags, InitType);
SkSurfaceProps(const SkSurfaceProps&);
SkSurfaceProps& operator=(const SkSurfaceProps&);
uint32_t flags() const { return fFlags; }
SkPixelGeometry pixelGeometry() const { return fPixelGeometry; }
bool isUseDeviceIndependentFonts() const {
return SkToBool(fFlags & kUseDeviceIndependentFonts_Flag);
}
bool operator==(const SkSurfaceProps& that) const {
return fFlags == that.fFlags && fPixelGeometry == that.fPixelGeometry;
}
bool operator!=(const SkSurfaceProps& that) const {
return !(*this == that);
}
private:
SkSurfaceProps();
uint32_t fFlags;
SkPixelGeometry fPixelGeometry;
};
#endif