Sync login framebuffer code to libui.
This commit is contained in:
parent
eede0df814
commit
2bc6e40f1d
2 changed files with 123 additions and 4 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014, 2015, 2016 Jonas 'Sortie' Termansen.
|
||||
* Copyright (c) 2014, 2015 Jonas 'Sortie' Termansen.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
|
@ -14,14 +14,17 @@
|
|||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* framebuffer.c
|
||||
* Framebuffer functions.
|
||||
* Framebuffer utilities.
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "framebuffer.h"
|
||||
#include "pixel.h"
|
||||
#include "vgafont.h"
|
||||
|
||||
struct framebuffer framebuffer_crop(struct framebuffer fb,
|
||||
size_t left,
|
||||
|
@ -69,3 +72,102 @@ void framebuffer_copy_to_framebuffer_blend(const struct framebuffer dst,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_crop_int(struct framebuffer fb,
|
||||
int left,
|
||||
int top,
|
||||
int width,
|
||||
int height)
|
||||
{
|
||||
if ( left < 0 ) { width -= -left; left = 0; }
|
||||
if ( top < 0 ) { top -= -height; top -= 0; }
|
||||
if ( width < 0 ) { width = 0; }
|
||||
if ( height < 0 ) { height = 0; }
|
||||
return framebuffer_crop(fb, left, top, width, height);
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_cut_left_x(struct framebuffer fb, int offset)
|
||||
{
|
||||
fb = framebuffer_crop_int(fb, offset, 0, fb.xres - offset, fb.yres);
|
||||
return fb;
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_cut_right_x(struct framebuffer fb, int offset)
|
||||
{
|
||||
fb = framebuffer_crop_int(fb, 0, 0, fb.xres - offset, fb.yres);
|
||||
return fb;
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_cut_top_y(struct framebuffer fb, int offset)
|
||||
{
|
||||
fb = framebuffer_crop_int(fb, 0, offset, fb.xres, fb.yres - offset);
|
||||
return fb;
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_cut_bottom_y(struct framebuffer fb, int offset)
|
||||
{
|
||||
fb = framebuffer_crop_int(fb, 0, 0, fb.xres, fb.yres - offset);
|
||||
return fb;
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_center_x(struct framebuffer fb, int x, int width)
|
||||
{
|
||||
x = x - width / 2;
|
||||
if ( x < 0 ) { width -= -x; x = 0; }
|
||||
if ( width < 0 ) { width = 0; }
|
||||
fb = framebuffer_crop(fb, x, 0, width, fb.yres);
|
||||
return fb;
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_center_y(struct framebuffer fb, int y, int height)
|
||||
{
|
||||
y = y - height / 2;
|
||||
if ( y < 0 ) { height -= -y; y = 0; }
|
||||
if ( height < 0 ) { height = 0; }
|
||||
fb = framebuffer_crop(fb, 0, y, fb.xres, height);
|
||||
return fb;
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_right_x(struct framebuffer fb, int x, int width)
|
||||
{
|
||||
x = x - width;
|
||||
if ( x < 0 ) { width -= -x; x = 0; }
|
||||
if ( width < 0 ) { width = 0; }
|
||||
fb = framebuffer_crop(fb, x, 0, width, fb.yres);
|
||||
return fb;
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_bottom_y(struct framebuffer fb, int y, int height)
|
||||
{
|
||||
y = y - height;
|
||||
if ( y < 0 ) { height -= -y; y = 0; }
|
||||
if ( height < 0 ) { height = 0; }
|
||||
fb = framebuffer_crop(fb, 0, y, fb.xres, height);
|
||||
return fb;
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_center_text_x(struct framebuffer fb, int x, const char* str)
|
||||
{
|
||||
int width = (FONT_WIDTH + 1) * strlen(str);
|
||||
return framebuffer_center_x(fb, x, width);
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_center_text_y(struct framebuffer fb, int y, const char* str)
|
||||
{
|
||||
(void) str;
|
||||
int height = FONT_HEIGHT;
|
||||
return framebuffer_center_y(fb, y, height);
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_right_text_x(struct framebuffer fb, int x, const char* str)
|
||||
{
|
||||
int width = (FONT_WIDTH + 1) * strlen(str);
|
||||
return framebuffer_right_x(fb, x, width);
|
||||
}
|
||||
|
||||
struct framebuffer framebuffer_bottom_text_y(struct framebuffer fb, int y, const char* str)
|
||||
{
|
||||
(void) str;
|
||||
int height = FONT_HEIGHT;
|
||||
return framebuffer_bottom_y(fb, y, height);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014, 2015, 2016 Jonas 'Sortie' Termansen.
|
||||
* Copyright (c) 2014, 2015 Jonas 'Sortie' Termansen.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
|
@ -14,7 +14,7 @@
|
|||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* framebuffer.h
|
||||
* Framebuffer functions.
|
||||
* Framebuffer utilities.
|
||||
*/
|
||||
|
||||
#ifndef FRAMEBUFFER_H
|
||||
|
@ -59,5 +59,22 @@ void framebuffer_copy_to_framebuffer(const struct framebuffer dst,
|
|||
const struct framebuffer src);
|
||||
void framebuffer_copy_to_framebuffer_blend(const struct framebuffer dst,
|
||||
const struct framebuffer src);
|
||||
struct framebuffer framebuffer_crop_int(struct framebuffer fb,
|
||||
int left,
|
||||
int top,
|
||||
int width,
|
||||
int height);
|
||||
struct framebuffer framebuffer_cut_left_x(struct framebuffer fb, int offset);
|
||||
struct framebuffer framebuffer_cut_right_x(struct framebuffer fb, int offset);
|
||||
struct framebuffer framebuffer_cut_top_y(struct framebuffer fb, int offset);
|
||||
struct framebuffer framebuffer_cut_bottom_y(struct framebuffer fb, int offset);
|
||||
struct framebuffer framebuffer_center_x(struct framebuffer fb, int x, int width);
|
||||
struct framebuffer framebuffer_center_y(struct framebuffer fb, int y, int height);
|
||||
struct framebuffer framebuffer_right_x(struct framebuffer fb, int x, int width);
|
||||
struct framebuffer framebuffer_bottom_y(struct framebuffer fb, int y, int height);
|
||||
struct framebuffer framebuffer_center_text_x(struct framebuffer fb, int x, const char* str);
|
||||
struct framebuffer framebuffer_center_text_y(struct framebuffer fb, int y, const char* str);
|
||||
struct framebuffer framebuffer_right_text_x(struct framebuffer fb, int x, const char* str);
|
||||
struct framebuffer framebuffer_bottom_text_y(struct framebuffer fb, int y, const char* str);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue