This repository has been archived by the owner on Sep 4, 2019. It is now read-only.
/
bbutil.h
132 lines (106 loc) · 3.74 KB
/
bbutil.h
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
/*
* Copyright (c) 2011-2012 Research In Motion Limited.
*
* 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 _UTILITY_H_INCLUDED
#define _UTILITY_H_INCLUDED
#include <EGL/egl.h>
#include <screen/screen.h>
#include <sys/platform.h>
extern EGLDisplay egl_disp;
extern EGLSurface egl_surf;
typedef struct font_t font_t;
#define BBUTIL_DEFAULT_FONT "/usr/fonts/font_repository/monotype/arial.ttf"
#ifdef __cplusplus
extern "C" {
#endif
/**
* Initializes EGL
*
* @param libscreen context that will be used for EGL setup
* @return EXIT_SUCCESS if initialization succeeded otherwise EXIT_FAILURE
*/
int bbutil_init_egl(screen_context_t ctx);
/**
* Terminates EGL
*/
void bbutil_terminate();
/**
* Swaps default bbutil window surface to the screen
*/
void bbutil_swap();
/**
* Loads the font from the specified font file.
* NOTE: should be called after a successful return from bbutil_init() or bbutil_init_egl() call
* @param font_file string indicating the absolute path of the font file
* @param point_size used for glyph generation
* @param dpi used for glyph generation
* @return pointer to font_t structure on success or NULL on failure
*/
font_t* bbutil_load_font(const char* font_file, int point_size, int dpi);
/**
* Destroys the passed font
* @param font to be destroyed
*/
void bbutil_destroy_font(font_t* font);
/**
* Renders the specified message using current font starting from the specified
* bottom left coordinates.
* NOTE: must be called after a successful return from bbutil_init() or bbutil_init_egl() call
*
* @param font to use for rendering
* @param msg the message to display
* @param x, y position of the bottom-left corner of text string in world coordinate space
* @param rgba color for the text to render with
*/
void bbutil_render_text(font_t* font, const char* msg, float x, float y, float r, float g, float b, float a);
/**
* Returns the non-scaled width and height of a string
* NOTE: must be called after a successful return from bbutil_init() or bbutil_init_egl() call
*
* @param font to use for measurement of a string size
* @param msg the message to get the size of
* @param return pointer for width of a string
* @param return pointer for height of a string
*/
void bbutil_measure_text(font_t* font, const char* msg, float* width, float* height);
/**
* Creates and loads a texture from a png file
* NOTE: must be called after a successful return from bbutil_init() or bbutil_init_egl() call
*
* @param filename path to texture png
* @param return width of texture
* @param return height of texture
* @param return gl texture handle
* @return EXIT_SUCCESS if texture loading succeeded otherwise EXIT_FAILURE
*/
int bbutil_load_texture(const char* filename, int* width, int* height, float* tex_x, float* tex_y, unsigned int* tex);
/**
* Returns dpi for a given screen
*
* @param ctx path libscreen context that corresponds to display of interest
* @return dpi for a given screen
*/
int bbutil_calculate_dpi(screen_context_t ctx);
/**
* Rotates the screen to a given angle
*
* @param angle to rotate screen surface to, must by 0, 90, 180, or 270
* @return EXIT_SUCCESS if texture loading succeeded otherwise EXIT_FAILURE
*/
int bbutil_rotate_screen_surface(int angle);
#ifdef __cplusplus
}
#endif
#endif