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
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* 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.
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*
|
*
|
||||||
* framebuffer.c
|
* framebuffer.c
|
||||||
* Framebuffer functions.
|
* Framebuffer utilities.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
#include "pixel.h"
|
#include "pixel.h"
|
||||||
|
#include "vgafont.h"
|
||||||
|
|
||||||
struct framebuffer framebuffer_crop(struct framebuffer fb,
|
struct framebuffer framebuffer_crop(struct framebuffer fb,
|
||||||
size_t left,
|
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
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* 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.
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*
|
*
|
||||||
* framebuffer.h
|
* framebuffer.h
|
||||||
* Framebuffer functions.
|
* Framebuffer utilities.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef FRAMEBUFFER_H
|
#ifndef FRAMEBUFFER_H
|
||||||
|
@ -59,5 +59,22 @@ void framebuffer_copy_to_framebuffer(const struct framebuffer dst,
|
||||||
const struct framebuffer src);
|
const struct framebuffer src);
|
||||||
void framebuffer_copy_to_framebuffer_blend(const struct framebuffer dst,
|
void framebuffer_copy_to_framebuffer_blend(const struct framebuffer dst,
|
||||||
const struct framebuffer src);
|
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
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue