summaryrefslogtreecommitdiffstats
path: root/exynos4/hal/include/FimgApi.h
blob: 05ccfb8d00934fbd907b9d49c3a8bcecdb32306f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/*
**
** Copyright 2009 Samsung Electronics Co, Ltd.
** Copyright 2008, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
**
**
*/

#ifndef FIMG_API_H
#define FIMG_API_H

#include <utils/Log.h>
#include "sec_g2d_4x.h"

#undef REAL_DEBUG
#undef ANDROID_LOG

#if defined(REAL_DEBUG)
#ifdef ANDROID_LOG
#define PRINT  SLOGE
#define PRINTD SLOGD
#else
#define PRINT  printf
#define PRINTD printf
#endif
#else
void VOID_FUNC(const char *format, ...);

#define PRINT  VOID_FUNC
#define PRINTD VOID_FUNC
#endif

struct Fimg {
    int             srcX;
    int             srcY;
    unsigned int    srcW;
    unsigned int    srcH;
    unsigned int    srcFWStride; // this is not w, just stride (w * bpp)
    unsigned int    srcFH;
    unsigned int    srcBPP;
    int             srcColorFormat;
    unsigned char  *srcAddr;

    int             dstX;
    int             dstY;
    unsigned int    dstW;
    unsigned int    dstH;
    unsigned int    dstFWStride; // this is not w, just stride (w * bpp)
    unsigned int    dstFH;
    unsigned int    dstBPP;
    int             dstColorFormat;
    unsigned char  *dstAddr;

    int             clipT;
    int             clipB;
    int             clipL;
    int             clipR;

    int             mskX;
    int             mskY;
    unsigned int    mskW;
    unsigned int    mskH;
    unsigned int    mskFWStride; // this is not w, just stride (w * bpp)
    unsigned int    mskFH;
    unsigned int    mskBPP;
    int             mskColorFormat;
    unsigned char  *mskAddr;

    unsigned long   fillcolor;
    int             rotate;
    unsigned int    alpha;
    int             xfermode;
    int             isDither;
    int             isFilter;
    int             colorFilter;
    int             matrixType;
    float           matrixSx;
    float           matrixSy;
};

#ifdef __cplusplus

struct blit_op_table {
    int op;
    const char *str;
};

extern struct blit_op_table optbl[];

class FimgApi
{
    public:
#endif

#ifdef __cplusplus
    private :
        bool    m_flagCreate;

    protected :
        FimgApi();
        FimgApi(const FimgApi& rhs) {}
        virtual ~FimgApi();

    public:
        bool        Create(void);
        bool        Destroy(void);
        inline bool FlagCreate(void) { return m_flagCreate; }
        bool        Stretch(struct fimg2d_blit *cmd);
        bool        Sync(void);

    protected:
        virtual bool t_Create(void);
        virtual bool t_Destroy(void);
        virtual bool t_Stretch(struct fimg2d_blit *cmd);
        virtual bool t_Sync(void);
        virtual bool t_Lock(void);
        virtual bool t_UnLock(void);

};
#endif

#ifdef __cplusplus
extern "C"
#endif
struct FimgApi *createFimgApi();

#ifdef __cplusplus
extern "C"
#endif
void destroyFimgApi(FimgApi *ptrFimgApi);

#ifdef __cplusplus
extern "C"
#endif
int stretchFimgApi(struct fimg2d_blit *cmd);
#ifdef __cplusplus
extern "C"
#endif
int SyncFimgApi(void);

void printDataBlit(char *title, struct fimg2d_blit *cmd);
void printDataBlitRotate(int rotate);
void printDataBlitImage(char *title, struct fimg2d_image *image);
void printDataBlitRect(char *title, struct fimg2d_rect *rect);
void printDataBlitScale(struct fimg2d_scale *scaling);
#endif //FIMG_API_H