[OpenBIOS] [PATCHv2 05/20] video: Create new video_common.c file for shared video primitive routines.
Mark Cave-Ayland
mark.cave-ayland at ilande.co.uk
Sun May 26 15:02:25 CEST 2013
Start by moving the get_color() and set_color() functions into the library.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
---
openbios-devel/include/libopenbios/video.h | 16 +++++++
openbios-devel/include/packages/video.h | 1 -
openbios-devel/libopenbios/build.xml | 1 +
openbios-devel/libopenbios/console_common.c | 1 +
openbios-devel/libopenbios/video_common.c | 64 +++++++++++++++++++++++++++
openbios-devel/packages/video.c | 55 +----------------------
6 files changed, 83 insertions(+), 55 deletions(-)
create mode 100644 openbios-devel/include/libopenbios/video.h
create mode 100644 openbios-devel/libopenbios/video_common.c
diff --git a/openbios-devel/include/libopenbios/video.h b/openbios-devel/include/libopenbios/video.h
new file mode 100644
index 0000000..dbc1747
--- /dev/null
+++ b/openbios-devel/include/libopenbios/video.h
@@ -0,0 +1,16 @@
+
+unsigned long get_color(int col_ind);
+void set_color(int ind, unsigned long color);
+void video_mask_blit(void);
+
+typedef struct osi_fb_info {
+ unsigned long mphys;
+ unsigned long mvirt;
+ int rb, w, h, depth;
+} osi_fb_info_t;
+
+struct {
+ int has_video;
+ osi_fb_info_t fb;
+ unsigned long *pal; /* 256 elements */
+} video;
diff --git a/openbios-devel/include/packages/video.h b/openbios-devel/include/packages/video.h
index 1e013b6..39ae8df 100644
--- a/openbios-devel/include/packages/video.h
+++ b/openbios-devel/include/packages/video.h
@@ -4,7 +4,6 @@
/* packages/video.c */
int video_get_res(int *w, int *h);
void draw_pixel(int x, int y, int colind);
-void set_color(int ind, unsigned long color);
void video_scroll(int height);
void init_video(unsigned long fb, int width, int height, int depth, int rb);
diff --git a/openbios-devel/libopenbios/build.xml b/openbios-devel/libopenbios/build.xml
index 8c1fe3f..cd15baf 100644
--- a/openbios-devel/libopenbios/build.xml
+++ b/openbios-devel/libopenbios/build.xml
@@ -20,6 +20,7 @@
<object source="linuxbios_info.c" condition="LINUXBIOS"/>
<object source="ofmem_common.c" condition="OFMEM"/>
<object source="xcoff_load.c" condition="LOADER_XCOFF"/>
+ <object source="video_common.c"/>
</library>
<dictionary name="openbios" target="forth">
diff --git a/openbios-devel/libopenbios/console_common.c b/openbios-devel/libopenbios/console_common.c
index 22ec230..1631769 100644
--- a/openbios-devel/libopenbios/console_common.c
+++ b/openbios-devel/libopenbios/console_common.c
@@ -16,6 +16,7 @@
#include "libopenbios/bindings.h"
#include "libopenbios/fontdata.h"
#include "libopenbios/console.h"
+#include "libopenbios/video.h"
#include "packages/video.h"
#define FONT_ADJ_HEIGHT (FONT_HEIGHT + 2)
diff --git a/openbios-devel/libopenbios/video_common.c b/openbios-devel/libopenbios/video_common.c
new file mode 100644
index 0000000..0c61e3a
--- /dev/null
+++ b/openbios-devel/libopenbios/video_common.c
@@ -0,0 +1,64 @@
+/*
+ * Creation Date: <2002/10/23 20:26:40 samuel>
+ * Time-stamp: <2004/01/07 19:39:15 samuel>
+ *
+ * <video_common.c>
+ *
+ * Shared video routines
+ *
+ * Copyright (C) 2002, 2003, 2004 Samuel Rydh (samuel at ibrium.se)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation
+ *
+ */
+
+#include "config.h"
+#include "libopenbios/bindings.h"
+#include "libopenbios/video.h"
+#include "packages/video.h"
+#include "drivers/vga.h"
+
+
+unsigned long
+get_color( int col_ind )
+{
+ unsigned long col;
+ if( !video.has_video || col_ind < 0 || col_ind > 255 )
+ return 0;
+ if( video.fb.depth == 8 )
+ return col_ind;
+ col = video.pal[col_ind];
+ if( video.fb.depth == 24 || video.fb.depth == 32 )
+ return col;
+ if( video.fb.depth == 15 )
+ return ((col>>9) & 0x7c00) | ((col>>6) & 0x03e0) | ((col>>3) & 0x1f);
+ return 0;
+}
+
+void
+set_color( int ind, unsigned long color )
+{
+ if( !video.has_video || ind < 0 || ind > 255 )
+ return;
+ video.pal[ind] = color;
+
+#ifdef CONFIG_MOL
+ if( video.fb.depth == 8 )
+ OSI_SetColor( ind, color );
+#elif defined(CONFIG_SPARC32)
+#if defined(CONFIG_DEBUG_CONSOLE_VIDEO)
+ if( video.fb.depth == 8 ) {
+ dac[0] = ind << 24;
+ dac[1] = ((color >> 16) & 0xff) << 24; // Red
+ dac[1] = ((color >> 8) & 0xff) << 24; // Green
+ dac[1] = (color & 0xff) << 24; // Blue
+ }
+#endif
+#else
+ vga_set_color(ind, ((color >> 16) & 0xff),
+ ((color >> 8) & 0xff),
+ (color & 0xff));
+#endif
+}
diff --git a/openbios-devel/packages/video.c b/openbios-devel/packages/video.c
index 3dbd3c5..bcc9dfc 100644
--- a/openbios-devel/packages/video.c
+++ b/openbios-devel/packages/video.c
@@ -20,21 +20,10 @@
#include "libopenbios/ofmem.h"
#include "drivers/drivers.h"
#include "packages/video.h"
+#include "libopenbios/video.h"
#include "libopenbios/console.h"
#include "drivers/vga.h"
-typedef struct osi_fb_info {
- unsigned long mphys;
- unsigned long mvirt;
- int rb, w, h, depth;
-} osi_fb_info_t;
-
-static struct {
- int has_video;
- osi_fb_info_t fb;
- unsigned long *pal; /* 256 elements */
-} video;
-
int
video_get_res( int *w, int *h )
@@ -103,22 +92,6 @@ startup_splash( void )
#endif
}
-static unsigned long
-get_color( int col_ind )
-{
- unsigned long col;
- if( !video.has_video || col_ind < 0 || col_ind > 255 )
- return 0;
- if( video.fb.depth == 8 )
- return col_ind;
- col = video.pal[col_ind];
- if( video.fb.depth == 24 || video.fb.depth == 32 )
- return col;
- if( video.fb.depth == 15 )
- return ((col>>9) & 0x7c00) | ((col>>6) & 0x03e0) | ((col>>3) & 0x1f);
- return 0;
-}
-
void
draw_pixel( int x, int y, int colind )
{
@@ -177,32 +150,6 @@ refresh_palette( void )
}
void
-set_color( int ind, unsigned long color )
-{
- if( !video.has_video || ind < 0 || ind > 255 )
- return;
- video.pal[ind] = color;
-
-#ifdef CONFIG_MOL
- if( video.fb.depth == 8 )
- OSI_SetColor( ind, color );
-#elif defined(CONFIG_SPARC32)
-#if defined(CONFIG_DEBUG_CONSOLE_VIDEO)
- if( video.fb.depth == 8 ) {
- dac[0] = ind << 24;
- dac[1] = ((color >> 16) & 0xff) << 24; // Red
- dac[1] = ((color >> 8) & 0xff) << 24; // Green
- dac[1] = (color & 0xff) << 24; // Blue
- }
-#endif
-#else
- vga_set_color(ind, ((color >> 16) & 0xff),
- ((color >> 8) & 0xff),
- (color & 0xff));
-#endif
-}
-
-void
video_scroll( int height )
{
int i, offs, size, *dest, *src;
--
1.7.10.4
More information about the OpenBIOS
mailing list