summaryrefslogtreecommitdiff
path: root/firmware/drivers/lcd-color-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/lcd-color-common.c')
-rw-r--r--firmware/drivers/lcd-color-common.c114
1 files changed, 0 insertions, 114 deletions
diff --git a/firmware/drivers/lcd-color-common.c b/firmware/drivers/lcd-color-common.c
index 8a9ef64cea..a1d2f47c22 100644
--- a/firmware/drivers/lcd-color-common.c
+++ b/firmware/drivers/lcd-color-common.c
@@ -40,7 +40,6 @@ static fb_data lcd_static_framebuffer[LCD_FBHEIGHT][LCD_FBWIDTH]
40 IRAM_LCDFRAMEBUFFER CACHEALIGN_AT_LEAST_ATTR(16); 40 IRAM_LCDFRAMEBUFFER CACHEALIGN_AT_LEAST_ATTR(16);
41 41
42static void *lcd_frameaddress_default(int x, int y); 42static void *lcd_frameaddress_default(int x, int y);
43static bool lcd_clip_viewport_pixel(int *x, int *y);
44 43
45static fb_data* lcd_backdrop = NULL; 44static fb_data* lcd_backdrop = NULL;
46static long lcd_backdrop_offset IDATA_ATTR = 0; 45static long lcd_backdrop_offset IDATA_ATTR = 0;
@@ -194,119 +193,6 @@ fb_data* lcd_get_backdrop(void)
194 return lcd_backdrop; 193 return lcd_backdrop;
195} 194}
196 195
197/* Set a single pixel */
198void lcd_drawpixel(int x, int y)
199{
200 if (lcd_clip_viewport_pixel(&x, &y))
201 lcd_fastpixelfuncs[lcd_current_viewport->drawmode](FBADDR(x, y));
202}
203
204/* Draw a line */
205void lcd_drawline(int x1, int y1, int x2, int y2)
206{
207 int numpixels;
208 int i;
209 int deltax, deltay;
210 int d, dinc1, dinc2;
211 int x, xinc1, xinc2;
212 int y, yinc1, yinc2;
213 int x_vp, y_vp, w_vp, h_vp;
214 lcd_fastpixelfunc_type *pfunc = lcd_fastpixelfuncs[lcd_current_viewport->drawmode];
215
216 deltay = abs(y2 - y1);
217 if (deltay == 0)
218 {
219 /* DEBUGF("lcd_drawline() called for horizontal line - optimisation.\n"); */
220 lcd_hline(x1, x2, y1);
221 return;
222 }
223 deltax = abs(x2 - x1);
224 if (deltax == 0)
225 {
226 /* DEBUGF("lcd_drawline() called for vertical line - optimisation.\n"); */
227 lcd_vline(x1, y1, y2);
228 return;
229 }
230 xinc2 = 1;
231 yinc2 = 1;
232
233 if (deltax >= deltay)
234 {
235 numpixels = deltax;
236 d = 2 * deltay - deltax;
237 dinc1 = deltay * 2;
238 dinc2 = (deltay - deltax) * 2;
239 xinc1 = 1;
240 yinc1 = 0;
241 }
242 else
243 {
244 numpixels = deltay;
245 d = 2 * deltax - deltay;
246 dinc1 = deltax * 2;
247 dinc2 = (deltax - deltay) * 2;
248 xinc1 = 0;
249 yinc1 = 1;
250 }
251 numpixels++; /* include endpoints */
252
253 if (x1 > x2)
254 {
255 xinc1 = -xinc1;
256 xinc2 = -xinc2;
257 }
258
259 if (y1 > y2)
260 {
261 yinc1 = -yinc1;
262 yinc2 = -yinc2;
263 }
264
265 x = x1;
266 y = y1;
267
268 void *(*fbaddr)(int x, int y) = FB_CURRENTVP_BUFFER->get_address_fn;
269 x_vp = lcd_current_viewport->x;
270 y_vp = lcd_current_viewport->y;
271 w_vp = lcd_current_viewport->width;
272 h_vp = lcd_current_viewport->height;
273
274 for (i = 0; i < numpixels; i++)
275 {
276 if (x >= 0 && y >= 0 && x < w_vp && y < h_vp)
277 pfunc(fbaddr(x + x_vp, y + y_vp));
278
279 if (d < 0)
280 {
281 d += dinc1;
282 x += xinc1;
283 y += yinc1;
284 }
285 else
286 {
287 d += dinc2;
288 x += xinc2;
289 y += yinc2;
290 }
291 }
292}
293
294/* Draw a rectangular box */
295void lcd_drawrect(int x, int y, int width, int height)
296{
297 if ((width <= 0) || (height <= 0))
298 return;
299
300 int x2 = x + width - 1;
301 int y2 = y + height - 1;
302
303 lcd_vline(x, y, y2);
304 lcd_vline(x2, y, y2);
305 lcd_hline(x, x2, y);
306 lcd_hline(x, x2, y2);
307}
308
309
310/* Draw a full native bitmap */ 196/* Draw a full native bitmap */
311void lcd_bitmap(const fb_data *src, int x, int y, int width, int height) 197void lcd_bitmap(const fb_data *src, int x, int y, int width, int height)
312{ 198{