• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
45     NATIVEEXPORT const uint8_t *GetPixel8(int32_t x, int32_t y) override;
46     NATIVEEXPORT const uint16_t *GetPixel16(int32_t x, int32_t y) override;
47     NATIVEEXPORT const uint32_t *GetPixel32(int32_t x, int32_t y) override;
48     NATIVEEXPORT bool GetARGB32Color(int32_t x, int32_t y, uint32_t &color) override;
49     NATIVEEXPORT uint8_t GetARGB32ColorA(uint32_t color) override;
50     NATIVEEXPORT uint8_t GetARGB32ColorR(uint32_t color) override;
51     NATIVEEXPORT uint8_t GetARGB32ColorG(uint32_t color) override;
52     NATIVEEXPORT uint8_t GetARGB32ColorB(uint32_t color) override;
53     NATIVEEXPORT void *GetWritablePixels() const override;
GetUniqueId()54     NATIVEEXPORT uint32_t GetUniqueId() const override
55     {
56         return astcId_;
57     }
58 
59     NATIVEEXPORT void scale(float xAxis, float yAxis) override;
60     NATIVEEXPORT bool resize(float xAxis, float yAxis) override;
61     NATIVEEXPORT void translate(float xAxis, float yAxis) override;
62     NATIVEEXPORT void rotate(float degrees) override;
63     NATIVEEXPORT void flip(bool xAxis, bool yAxis) override;
64     NATIVEEXPORT uint32_t crop(const Rect &rect) override;
65 
66     // Config the pixel map parameter
67     NATIVEEXPORT bool IsSameImage(const PixelMap &other) override;
68     NATIVEEXPORT bool IsTransformered() override;
69     // judgement whether create pixelmap use source as result
70     NATIVEEXPORT bool IsSourceAsResponse() override;
71 
72     NATIVEEXPORT uint32_t ReadPixels(const uint64_t &bufferSize, const uint32_t &offset, const uint32_t &stride,
73                                      const Rect &region, uint8_t *dst) override;
74     NATIVEEXPORT uint32_t ReadPixels(const uint64_t &bufferSize, uint8_t *dst) override;
75     NATIVEEXPORT uint32_t ReadPixel(const Position &pos, uint32_t &dst) override;
76     NATIVEEXPORT uint32_t ResetConfig(const Size &size, const PixelFormat &format) override;
77     NATIVEEXPORT uint32_t WritePixel(const Position &pos, const uint32_t &color) override;
78     NATIVEEXPORT uint32_t WritePixels(const uint8_t *source, const uint64_t &bufferSize, const uint32_t &offset,
79                          const uint32_t &stride, const Rect &region) override;
80     NATIVEEXPORT uint32_t WritePixels(const uint8_t *source, const uint64_t &bufferSize) override;
81     NATIVEEXPORT bool WritePixels(const uint32_t &color) override;
82 private:
83     uint32_t astcId_ = 0;
84 };
85 } // namespace Media
86 } // namespace OHOS
87 
88 #endif // INTERFACES_INNERKITS_INCLUDE_PIXEL_ASTC_H