1 /* 2 * Copyright (C) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef INTERFACES_INNERKITS_INCLUDE_PIXEL_ASTC_H 17 #define INTERFACES_INNERKITS_INCLUDE_PIXEL_ASTC_H 18 19 #include "pixel_map.h" 20 21 namespace OHOS { 22 namespace Media { 23 typedef struct { 24 uint8_t magic[4]; 25 uint8_t blockdimX; 26 uint8_t blockdimY; 27 uint8_t blockdimZ; 28 uint8_t xsize[3]; 29 uint8_t ysize[3]; 30 uint8_t zsize[3]; 31 } AstcHeader; 32 33 class PixelAstc : public PixelMap { 34 public: PixelAstc()35 PixelAstc() 36 { 37 astcId_ = currentId.fetch_add(1, std::memory_order_relaxed); 38 } 39 virtual ~PixelAstc(); 40 41 NATIVEEXPORT uint32_t SetAlpha(const float percent) override; 42 NATIVEEXPORT bool SetAlphaType(const AlphaType &alphaType) override; 43 NATIVEEXPORT void SetTransformered(bool isTransformered) override; 44 NATIVEEXPORT void SetRowStride(uint32_t stride) override; 45 46 NATIVEEXPORT const uint8_t *GetPixel8(int32_t x, int32_t y) override; 47 NATIVEEXPORT const uint16_t *GetPixel16(int32_t x, int32_t y) override; 48 NATIVEEXPORT const uint32_t *GetPixel32(int32_t x, int32_t y) override; 49 NATIVEEXPORT bool GetARGB32Color(int32_t x, int32_t y, uint32_t &color) override; 50 NATIVEEXPORT uint8_t GetARGB32ColorA(uint32_t color) override; 51 NATIVEEXPORT uint8_t GetARGB32ColorR(uint32_t color) override; 52 NATIVEEXPORT uint8_t GetARGB32ColorG(uint32_t color) override; 53 NATIVEEXPORT uint8_t GetARGB32ColorB(uint32_t color) override; 54 NATIVEEXPORT int32_t GetRowStride() override; 55 NATIVEEXPORT void *GetWritablePixels() const override; GetUniqueId()56 NATIVEEXPORT uint32_t GetUniqueId() const override 57 { 58 return astcId_; 59 } 60 61 NATIVEEXPORT void scale(float xAxis, float yAxis) override; 62 NATIVEEXPORT bool resize(float xAxis, float yAxis) override; 63 NATIVEEXPORT void translate(float xAxis, float yAxis) override; 64 NATIVEEXPORT void rotate(float degrees) override; 65 NATIVEEXPORT void flip(bool xAxis, bool yAxis) override; 66 NATIVEEXPORT uint32_t crop(const Rect &rect) override; 67 68 // Config the pixel map parameter 69 NATIVEEXPORT bool IsSameImage(const PixelMap &other) override; 70 NATIVEEXPORT bool IsTransformered() override; 71 // judgement whether create pixelmap use source as result 72 NATIVEEXPORT bool IsSourceAsResponse() override; 73 74 NATIVEEXPORT uint32_t ReadPixels(const uint64_t &bufferSize, const uint32_t &offset, const uint32_t &stride, 75 const Rect ®ion, uint8_t *dst) override; 76 NATIVEEXPORT uint32_t ReadPixels(const uint64_t &bufferSize, uint8_t *dst) override; 77 NATIVEEXPORT uint32_t ReadPixel(const Position &pos, uint32_t &dst) override; 78 NATIVEEXPORT uint32_t ResetConfig(const Size &size, const PixelFormat &format) override; 79 NATIVEEXPORT uint32_t WritePixel(const Position &pos, const uint32_t &color) override; 80 NATIVEEXPORT uint32_t WritePixels(const uint8_t *source, const uint64_t &bufferSize, const uint32_t &offset, 81 const uint32_t &stride, const Rect ®ion) override; 82 NATIVEEXPORT uint32_t WritePixels(const uint8_t *source, const uint64_t &bufferSize) override; 83 NATIVEEXPORT bool WritePixels(const uint32_t &color) override; 84 85 private: 86 uint32_t astcId_ = 0; 87 }; 88 } // namespace Media 89 } // namespace OHOS 90 91 #endif // INTERFACES_INNERKITS_INCLUDE_PIXEL_ASTC_H