14a8126e7f81384526629b1e21bf89b632ea13cd9reed/* 24a8126e7f81384526629b1e21bf89b632ea13cd9reed * Copyright 2014 Google Inc. 34a8126e7f81384526629b1e21bf89b632ea13cd9reed * 44a8126e7f81384526629b1e21bf89b632ea13cd9reed * Use of this source code is governed by a BSD-style license that can be 54a8126e7f81384526629b1e21bf89b632ea13cd9reed * found in the LICENSE file. 64a8126e7f81384526629b1e21bf89b632ea13cd9reed */ 74a8126e7f81384526629b1e21bf89b632ea13cd9reed 84a8126e7f81384526629b1e21bf89b632ea13cd9reed#ifndef SkSurfaceProps_DEFINED 94a8126e7f81384526629b1e21bf89b632ea13cd9reed#define SkSurfaceProps_DEFINED 104a8126e7f81384526629b1e21bf89b632ea13cd9reed 114a8126e7f81384526629b1e21bf89b632ea13cd9reed#include "SkTypes.h" 124a8126e7f81384526629b1e21bf89b632ea13cd9reed 134a8126e7f81384526629b1e21bf89b632ea13cd9reed/** 144a8126e7f81384526629b1e21bf89b632ea13cd9reed * Description of how the LCD strips are arranged for each pixel. If this is unknown, or the 154a8126e7f81384526629b1e21bf89b632ea13cd9reed * pixels are meant to be "portable" and/or transformed before showing (e.g. rotated, scaled) 164a8126e7f81384526629b1e21bf89b632ea13cd9reed * then use kUnknown_SkPixelGeometry. 174a8126e7f81384526629b1e21bf89b632ea13cd9reed */ 184a8126e7f81384526629b1e21bf89b632ea13cd9reedenum SkPixelGeometry { 194a8126e7f81384526629b1e21bf89b632ea13cd9reed kUnknown_SkPixelGeometry, 204a8126e7f81384526629b1e21bf89b632ea13cd9reed kRGB_H_SkPixelGeometry, 214a8126e7f81384526629b1e21bf89b632ea13cd9reed kBGR_H_SkPixelGeometry, 224a8126e7f81384526629b1e21bf89b632ea13cd9reed kRGB_V_SkPixelGeometry, 234a8126e7f81384526629b1e21bf89b632ea13cd9reed kBGR_V_SkPixelGeometry, 244a8126e7f81384526629b1e21bf89b632ea13cd9reed}; 254a8126e7f81384526629b1e21bf89b632ea13cd9reed 264a8126e7f81384526629b1e21bf89b632ea13cd9reed// Returns true iff geo is a known geometry and is RGB. 274a8126e7f81384526629b1e21bf89b632ea13cd9reedstatic inline bool SkPixelGeometryIsRGB(SkPixelGeometry geo) { 284a8126e7f81384526629b1e21bf89b632ea13cd9reed return kRGB_H_SkPixelGeometry == geo || kRGB_V_SkPixelGeometry == geo; 294a8126e7f81384526629b1e21bf89b632ea13cd9reed} 304a8126e7f81384526629b1e21bf89b632ea13cd9reed 314a8126e7f81384526629b1e21bf89b632ea13cd9reed// Returns true iff geo is a known geometry and is BGR. 324a8126e7f81384526629b1e21bf89b632ea13cd9reedstatic inline bool SkPixelGeometryIsBGR(SkPixelGeometry geo) { 334a8126e7f81384526629b1e21bf89b632ea13cd9reed return kBGR_H_SkPixelGeometry == geo || kBGR_V_SkPixelGeometry == geo; 344a8126e7f81384526629b1e21bf89b632ea13cd9reed} 354a8126e7f81384526629b1e21bf89b632ea13cd9reed 364a8126e7f81384526629b1e21bf89b632ea13cd9reed// Returns true iff geo is a known geometry and is horizontal. 374a8126e7f81384526629b1e21bf89b632ea13cd9reedstatic inline bool SkPixelGeometryIsH(SkPixelGeometry geo) { 384a8126e7f81384526629b1e21bf89b632ea13cd9reed return kRGB_H_SkPixelGeometry == geo || kBGR_H_SkPixelGeometry == geo; 394a8126e7f81384526629b1e21bf89b632ea13cd9reed} 404a8126e7f81384526629b1e21bf89b632ea13cd9reed 414a8126e7f81384526629b1e21bf89b632ea13cd9reed// Returns true iff geo is a known geometry and is vertical. 424a8126e7f81384526629b1e21bf89b632ea13cd9reedstatic inline bool SkPixelGeometryIsV(SkPixelGeometry geo) { 434a8126e7f81384526629b1e21bf89b632ea13cd9reed return kRGB_V_SkPixelGeometry == geo || kBGR_V_SkPixelGeometry == geo; 444a8126e7f81384526629b1e21bf89b632ea13cd9reed} 454a8126e7f81384526629b1e21bf89b632ea13cd9reed 464a8126e7f81384526629b1e21bf89b632ea13cd9reed/** 474a8126e7f81384526629b1e21bf89b632ea13cd9reed * Describes properties and constraints of a given SkSurface. The rendering engine can parse these 484a8126e7f81384526629b1e21bf89b632ea13cd9reed * during drawing, and can sometimes optimize its performance (e.g. disabling an expensive 494a8126e7f81384526629b1e21bf89b632ea13cd9reed * feature). 504a8126e7f81384526629b1e21bf89b632ea13cd9reed */ 517c11aadd8268a1b003771ebb2aa82d53a909fe86fmalitaclass SK_API SkSurfaceProps { 524a8126e7f81384526629b1e21bf89b632ea13cd9reedpublic: 534a8126e7f81384526629b1e21bf89b632ea13cd9reed enum Flags { 544a8126e7f81384526629b1e21bf89b632ea13cd9reed kDisallowAntiAlias_Flag = 1 << 0, 554a8126e7f81384526629b1e21bf89b632ea13cd9reed kDisallowDither_Flag = 1 << 1, 564a8126e7f81384526629b1e21bf89b632ea13cd9reed kUseDistanceFieldFonts_Flag = 1 << 2, 574a8126e7f81384526629b1e21bf89b632ea13cd9reed }; 584a8126e7f81384526629b1e21bf89b632ea13cd9reed SkSurfaceProps(uint32_t flags, SkPixelGeometry); 594a8126e7f81384526629b1e21bf89b632ea13cd9reed 604a8126e7f81384526629b1e21bf89b632ea13cd9reed enum InitType { 614a8126e7f81384526629b1e21bf89b632ea13cd9reed kLegacyFontHost_InitType 624a8126e7f81384526629b1e21bf89b632ea13cd9reed }; 634a8126e7f81384526629b1e21bf89b632ea13cd9reed SkSurfaceProps(InitType); 644a8126e7f81384526629b1e21bf89b632ea13cd9reed SkSurfaceProps(uint32_t flags, InitType); 654af267b11964d4a8acdb232ac46094c84d890e88reed SkSurfaceProps(const SkSurfaceProps& other); 664a8126e7f81384526629b1e21bf89b632ea13cd9reed 674a8126e7f81384526629b1e21bf89b632ea13cd9reed uint32_t flags() const { return fFlags; } 684a8126e7f81384526629b1e21bf89b632ea13cd9reed SkPixelGeometry pixelGeometry() const { return fPixelGeometry; } 694a8126e7f81384526629b1e21bf89b632ea13cd9reed 704a8126e7f81384526629b1e21bf89b632ea13cd9reed bool isDisallowAA() const { return SkToBool(fFlags & kDisallowAntiAlias_Flag); } 714a8126e7f81384526629b1e21bf89b632ea13cd9reed bool isDisallowDither() const { return SkToBool(fFlags & kDisallowDither_Flag); } 724a8126e7f81384526629b1e21bf89b632ea13cd9reed bool isUseDistanceFieldFonts() const { return SkToBool(fFlags & kUseDistanceFieldFonts_Flag); } 734a8126e7f81384526629b1e21bf89b632ea13cd9reed 744a8126e7f81384526629b1e21bf89b632ea13cd9reedprivate: 754a8126e7f81384526629b1e21bf89b632ea13cd9reed SkSurfaceProps(); 764a8126e7f81384526629b1e21bf89b632ea13cd9reed 774a8126e7f81384526629b1e21bf89b632ea13cd9reed uint32_t fFlags; 784a8126e7f81384526629b1e21bf89b632ea13cd9reed SkPixelGeometry fPixelGeometry; 794a8126e7f81384526629b1e21bf89b632ea13cd9reed}; 804a8126e7f81384526629b1e21bf89b632ea13cd9reed 814a8126e7f81384526629b1e21bf89b632ea13cd9reed#endif 82