1 /*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 #ifndef EGL_CONFIG_H
17 #define EGL_CONFIG_H
18 
19 #include<EGL/egl.h>
20 #include<EGL/eglinternalplatform.h>
21 
22 #define MIN_SWAP_INTERVAL 1
23 #define MAX_SWAP_INTERVAL 10
24 
25 
26 class EglConfig {
27 public:
28     bool getConfAttrib(EGLint attrib,EGLint* val) const;
29     bool operator<(const EglConfig& conf)   const;
30     bool operator>=(const EglConfig& conf)  const;
31     bool compitableWith(const EglConfig& conf)  const; //compitability
32     bool choosen(const EglConfig& dummy);
surfaceType()33     EGLint surfaceType(){ return m_surface_type;};
id()34     EGLint id(){return m_config_id;};
nativeId()35     EGLint nativeId(){return m_native_config_id;};
nativeConfig()36     EGLNativePixelFormatType nativeConfig(){ return m_nativeFormat;}
37 
38     EglConfig(EGLint red_size,
39               EGLint green_size,
40               EGLint blue_size,
41               EGLint alpha_size,
42               EGLenum  caveat,
43               EGLint config_id,
44               EGLint depth_size,
45               EGLint frame_buffer_level,
46               EGLint max_pbuffer_width,
47               EGLint max_pbuffer_height,
48               EGLint max_pbuffer_size,
49               EGLBoolean native_renderable,
50               EGLint renderable_type,
51               EGLint native_visual_id,
52               EGLint native_visual_type,
53               EGLint samples_per_pixel,
54               EGLint stencil_size,
55               EGLint surface_type,
56               EGLenum transparent_type,
57               EGLint trans_red_val,
58               EGLint trans_green_val,
59               EGLint trans_blue_val,
60               EGLNativePixelFormatType frmt);
61 
62     EglConfig(const EglConfig& conf);
63 
64     EglConfig(const EglConfig& conf,
65               EGLint config_id,
66               EGLint red_size,
67               EGLint green_size,
68               EGLint blue_size,
69               EGLint alpha_size);
70 
71 private:
72 
73     const EGLint                    m_buffer_size;
74     const EGLint                    m_red_size;
75     const EGLint                    m_green_size;
76     const EGLint                    m_blue_size;
77     const EGLint                    m_alpha_size;
78     const EGLBoolean                m_bind_to_tex_rgb;
79     const EGLBoolean                m_bind_to_tex_rgba;
80     const EGLenum                   m_caveat;
81     const EGLint                    m_config_id;
82     const EGLint                    m_native_config_id;
83     const EGLint                    m_frame_buffer_level;
84     const EGLint                    m_depth_size;
85     const EGLint                    m_max_pbuffer_width;
86     const EGLint                    m_max_pbuffer_height;
87     const EGLint                    m_max_pbuffer_size;
88     const EGLint                    m_max_swap_interval;
89     const EGLint                    m_min_swap_interval;
90     const EGLBoolean                m_native_renderable;
91     const EGLint                    m_renderable_type;
92     const EGLint                    m_native_visual_id;
93     const EGLint                    m_native_visual_type;
94     const EGLint                    m_sample_buffers_num;
95     const EGLint                    m_samples_per_pixel;
96     const EGLint                    m_stencil_size;
97     const EGLint                    m_surface_type;
98     const EGLenum                   m_transparent_type;
99     const EGLint                    m_trans_red_val;
100     const EGLint                    m_trans_green_val;
101     const EGLint                    m_trans_blue_val;
102     const EGLenum                   m_conformant;
103 
104     const EGLNativePixelFormatType  m_nativeFormat;
105 };
106 
107 #endif
108