mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-11-23 06:51:26 +03:00
[project @ 2003-02-04 09:34:32 by bursa]
Remove obsolete files. svn path=/import/netsurf/; revision=95
This commit is contained in:
parent
30c5f817ba
commit
948dfeb1c2
@ -1,75 +0,0 @@
|
||||
/**
|
||||
* $Id: font.c,v 1.4 2002/06/26 12:19:24 bursa Exp $
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "css.h"
|
||||
#include "font.h"
|
||||
|
||||
/**
|
||||
* internal structures
|
||||
*/
|
||||
|
||||
struct font_set {
|
||||
/* a set of font handles */
|
||||
int stop_lcc_complaining;
|
||||
};
|
||||
|
||||
/**
|
||||
* functions
|
||||
*/
|
||||
|
||||
struct font_set * font_set_create(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
font_id font_add(struct font_set * font_set, const char * name, unsigned int weight,
|
||||
unsigned int size)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void font_set_free(struct font_set * font_set)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* find where to split some text to fit it in width
|
||||
*/
|
||||
|
||||
struct font_split font_split(struct font_set * font_set, font_id id, const char * text,
|
||||
unsigned long width, int force)
|
||||
{
|
||||
size_t len = strlen(text);
|
||||
unsigned int i;
|
||||
struct font_split split;
|
||||
|
||||
split.height = 30;
|
||||
|
||||
if (len * 20 <= width) {
|
||||
split.width = len * 20;
|
||||
split.end = text + len;
|
||||
} else {
|
||||
for (i = width / 20; i != 0 && text[i] != ' '; i--)
|
||||
;
|
||||
if (force && i == 0) {
|
||||
i = width / 20;
|
||||
if (i == 0) i = 1;
|
||||
}
|
||||
split.width = i * 20;
|
||||
if (text[i] == ' ') i++;
|
||||
split.end = text + i;
|
||||
}
|
||||
|
||||
return split;
|
||||
}
|
||||
|
||||
unsigned long font_width(struct css_style * style, const char * text, unsigned int length)
|
||||
{
|
||||
return length * 7;
|
||||
}
|
||||
|
@ -1,28 +0,0 @@
|
||||
/**
|
||||
* $Id: font.h,v 1.3 2002/06/18 21:24:21 bursa Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
* structures and typedefs
|
||||
*/
|
||||
|
||||
struct font_set;
|
||||
typedef unsigned int font_id;
|
||||
struct font_split {
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
const char * end;
|
||||
};
|
||||
|
||||
/**
|
||||
* interface
|
||||
*/
|
||||
|
||||
struct font_set * font_set_create(void);
|
||||
font_id font_add(struct font_set * font_set, const char * name, unsigned int weight,
|
||||
unsigned int size);
|
||||
void font_set_free(struct font_set * font_set);
|
||||
struct font_split font_split(struct font_set * font_set, font_id id, const char * text,
|
||||
unsigned long width, int force);
|
||||
unsigned long font_width(struct css_style * style, const char * text, unsigned int length);
|
||||
|
@ -1,34 +0,0 @@
|
||||
# $Id: makefile,v 1.3 2002/05/04 19:57:18 bursa Exp $
|
||||
|
||||
FLAGS = -g -Wall -W -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual \
|
||||
-Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes -Wmissing-prototypes \
|
||||
-Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -std=c9x `xml2-config --cflags`
|
||||
CC = gcc
|
||||
|
||||
render: render.o utils.o css.o css_enum.o font.o box.o layout.o
|
||||
$(CC) $(FLAGS) -o render render.o utils.o css.o css_enum.o font.o box.o layout.o `xml2-config --libs`
|
||||
|
||||
render.o: render.c css.h css_enum.h utils.h font.h box.h layout.h
|
||||
$(CC) $(FLAGS) -c render.c
|
||||
|
||||
css.o: css.c css.h css_enum.h utils.h
|
||||
$(CC) $(FLAGS) -c css.c
|
||||
|
||||
utils.o: utils.c utils.h
|
||||
$(CC) $(FLAGS) -c utils.c
|
||||
|
||||
font.o: font.c font.h
|
||||
$(CC) $(FLAGS) -c font.c
|
||||
|
||||
css_enum.o: css_enum.c css_enum.h
|
||||
$(CC) $(FLAGS) -c css_enum.c
|
||||
|
||||
css_enum.c css_enum.h: css_enums makeenum
|
||||
./makeenum css_enum < css_enums
|
||||
|
||||
box.o: box.c box.h font.h css.h utils.h
|
||||
$(CC) $(FLAGS) -c box.c
|
||||
|
||||
layout.o: layout.c layout.h font.h css.h utils.h box.h
|
||||
$(CC) $(FLAGS) -c layout.c
|
||||
|
195
render/render.c
195
render/render.c
@ -1,195 +0,0 @@
|
||||
/**
|
||||
* $Id: render.c,v 1.17 2002/06/28 20:14:04 bursa Exp $
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "libxml/HTMLparser.h"
|
||||
#include "css.h"
|
||||
#include "utils.h"
|
||||
#include "font.h"
|
||||
#include "box.h"
|
||||
#include "layout.h"
|
||||
|
||||
/**
|
||||
* internal functions
|
||||
*/
|
||||
|
||||
void render_plain_element(char * g, struct box * box, unsigned long x, unsigned long y);
|
||||
void render_plain(struct box * box);
|
||||
void render_dump(struct box * box, unsigned long x, unsigned long y);
|
||||
|
||||
|
||||
/**
|
||||
* render to a character grid
|
||||
*/
|
||||
|
||||
void render_plain_element(char * g, struct box * box, unsigned long x, unsigned long y)
|
||||
{
|
||||
unsigned long i;
|
||||
unsigned int l;
|
||||
struct box * c;
|
||||
const char vline = box->type == BOX_INLINE_CONTAINER ? ':' : '|';
|
||||
const char hline = box->type == BOX_INLINE_CONTAINER ? '·' : '-';
|
||||
|
||||
for (i = (y + box->y) + 1; i < (y + box->y + box->height); i++) {
|
||||
g[80 * i + (x + box->x)] = vline;
|
||||
g[80 * i + (x + box->x + box->width)] = vline;
|
||||
}
|
||||
for (i = (x + box->x); i <= (x + box->x + box->width); i++) {
|
||||
g[80 * (y + box->y) + i] = hline;
|
||||
g[80 * (y + box->y + box->height) + i] = hline;
|
||||
}
|
||||
|
||||
switch (box->type) {
|
||||
case BOX_TABLE:
|
||||
case BOX_TABLE_ROW:
|
||||
case BOX_TABLE_CELL:
|
||||
case BOX_BLOCK: strncpy(g + 80 * (y + box->y) + x + box->x,
|
||||
(const char *) box->node->name,
|
||||
strlen((const char *) box->node->name));
|
||||
break;
|
||||
case BOX_INLINE: strncpy(g + 80 * (y + box->y) + x + box->x,
|
||||
(const char *) box->node->parent->name,
|
||||
strlen((const char *) box->node->parent->name));
|
||||
break;
|
||||
case BOX_INLINE_CONTAINER:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (box->type == BOX_INLINE && box->node->content) {
|
||||
l = strlen(box->text);
|
||||
if ((x + box->x + box->width) - (x + box->x) - 1 < l)
|
||||
l = (x + box->x + box->width) - (x + box->x) - 1;
|
||||
strncpy(g + 80 * ((y + box->y) + 1) + (x + box->x) + 1, box->text, l);
|
||||
}
|
||||
|
||||
for (c = box->children; c != 0; c = c->next)
|
||||
render_plain_element(g, c, x + box->x, y + box->y);
|
||||
}
|
||||
|
||||
|
||||
void render_plain(struct box * box)
|
||||
{
|
||||
int i;
|
||||
char *g;
|
||||
|
||||
g = calloc(100000, 1);
|
||||
if (g == 0) exit(1);
|
||||
|
||||
for (i = 0; i < 10000; i++)
|
||||
g[i] = ' ';
|
||||
|
||||
render_plain_element(g, box, 0, 0);
|
||||
|
||||
for (i = 0; i < 100; i++)
|
||||
printf("%.80s\n", g + (80 * i));
|
||||
}
|
||||
|
||||
|
||||
void render_dump(struct box * box, unsigned long x, unsigned long y)
|
||||
{
|
||||
struct box * c;
|
||||
const char * const noname = "";
|
||||
const char * name = noname;
|
||||
|
||||
switch (box->type) {
|
||||
case BOX_TABLE:
|
||||
case BOX_TABLE_ROW:
|
||||
case BOX_TABLE_CELL:
|
||||
case BOX_FLOAT_LEFT:
|
||||
case BOX_FLOAT_RIGHT:
|
||||
case BOX_BLOCK: if (box->node) name = (const char *) box->node->name;
|
||||
break;
|
||||
case BOX_INLINE:
|
||||
case BOX_INLINE_CONTAINER:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
printf("rect %li %li %li %li \"%s\" \"", x + box->x, y + box->y,
|
||||
box->width, box->height, name);
|
||||
if (box->type == BOX_INLINE) {
|
||||
unsigned int i;
|
||||
for (i = 0; i < box->length; i++) {
|
||||
if (box->text[i] == '"')
|
||||
printf("\\\"");
|
||||
else if (box->text[i] == '[')
|
||||
printf("\\[");
|
||||
else if (box->text[i] == '$')
|
||||
printf("\\$");
|
||||
else
|
||||
printf("%c", box->text[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (name == noname)
|
||||
printf("\" \"\"\n");
|
||||
else
|
||||
printf("\" #%.6x\n", 0xffffff - ((name[0] << 16) | (name[1] << 8) | name[0]));
|
||||
fflush(stdout);
|
||||
|
||||
for (c = box->children; c != 0; c = c->next)
|
||||
if (c->type != BOX_FLOAT_LEFT && c->type != BOX_FLOAT_RIGHT)
|
||||
render_dump(c, x + box->x, y + box->y);
|
||||
|
||||
for (c = box->float_children; c != 0; c = c->next_float)
|
||||
render_dump(c, x + box->x, y + box->y);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct css_stylesheet * stylesheet;
|
||||
struct css_style * style = xcalloc(1, sizeof(struct css_style));
|
||||
struct css_selector * selector = xcalloc(1, sizeof(struct css_selector));
|
||||
xmlNode * c;
|
||||
xmlDoc * doc;
|
||||
struct box * doc_box = xcalloc(1, sizeof(struct box));
|
||||
struct box * html_box;
|
||||
char * f;
|
||||
|
||||
if (argc < 3) die("usage: render htmlfile cssfile");
|
||||
|
||||
fprintf(stderr, "Parsing html...\n");
|
||||
doc = htmlParseFile(argv[1], 0);
|
||||
if (doc == 0) die("htmlParseFile failed");
|
||||
|
||||
for (c = doc->children; c != 0 && c->type != XML_ELEMENT_NODE; c = c->next)
|
||||
;
|
||||
if (c == 0) die("no element in document");
|
||||
if (strcmp((const char *) c->name, "html")) die("document is not html");
|
||||
|
||||
fprintf(stderr, "Parsing css...\n");
|
||||
f = load(argv[2]);
|
||||
stylesheet = css_new_stylesheet();
|
||||
css_parse_stylesheet(stylesheet, f);
|
||||
/* css_dump_stylesheet(stylesheet);*/
|
||||
|
||||
memcpy(style, &css_base_style, sizeof(struct css_style));
|
||||
doc_box->type = BOX_BLOCK;
|
||||
doc_box->node = c;
|
||||
fprintf(stderr, "XML tree to box tree...\n");
|
||||
xml_to_box(c, style, stylesheet, &selector, 0, doc_box, 0);
|
||||
html_box = doc_box->children;
|
||||
box_dump(html_box, 0);
|
||||
|
||||
fprintf(stderr, "Layout document...\n");
|
||||
layout_document(html_box, 600);
|
||||
box_dump(html_box, 0);
|
||||
/* render_plain(html_box);*/
|
||||
|
||||
fprintf(stderr, "Rendering...\n");
|
||||
printf("%li %li\n", html_box->width, html_box->height);
|
||||
render_dump(html_box, 0, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
|
@ -1,19 +0,0 @@
|
||||
#!/usr/bin/wish
|
||||
|
||||
gets stdin size
|
||||
scan $size "%i %i" x y
|
||||
canvas .can -width [expr $x+16] -height [expr $y+16] -borderwidth 0 -highlightthickness 0 -bg white
|
||||
pack .can
|
||||
|
||||
proc rect {x y w h n t c} {
|
||||
set x [expr $x+8]
|
||||
set y [expr $y+8]
|
||||
.can create rectangle $x $y [expr $x+$w] [expr $y+$h] -fill $c
|
||||
.can create text $x $y -anchor nw -text $n -fill red -font "arial 18 bold"
|
||||
.can create text $x [expr $y+$h] -anchor sw -text $t -font "courier 12"
|
||||
}
|
||||
|
||||
while {-1 != [gets stdin line]} {
|
||||
eval $line
|
||||
}
|
||||
|
221
riscos/netsurf.c
221
riscos/netsurf.c
@ -1,221 +0,0 @@
|
||||
/**
|
||||
* $Id: netsurf.c,v 1.1 2002/07/27 21:10:45 bursa Exp $
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "libxml/HTMLparser.h"
|
||||
#include "netsurf/render/css.h"
|
||||
#include "netsurf/render/box.h"
|
||||
#include "netsurf/render/font.h"
|
||||
#include "netsurf/render/layout.h"
|
||||
#include "netsurf/render/utils.h"
|
||||
#include "oslib/colourtrans.h"
|
||||
#include "oslib/font.h"
|
||||
#include "oslib/wimp.h"
|
||||
#include "curl/curl.h"
|
||||
|
||||
font_f font;
|
||||
|
||||
void redraw(struct box * box, signed long x, signed long y)
|
||||
{
|
||||
struct box * c;
|
||||
const char * const noname = "";
|
||||
const char * name = noname;
|
||||
|
||||
switch (box->type) {
|
||||
case BOX_TABLE:
|
||||
case BOX_TABLE_ROW:
|
||||
case BOX_TABLE_CELL:
|
||||
case BOX_FLOAT_LEFT:
|
||||
case BOX_FLOAT_RIGHT:
|
||||
case BOX_BLOCK: if (box->node) name = (const char *) box->node->name;
|
||||
break;
|
||||
case BOX_INLINE:
|
||||
case BOX_INLINE_CONTAINER:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* fprintf(stderr, "redraw: <%s> %li %li\n", name, x, y); */
|
||||
|
||||
colourtrans_set_gcol(os_COLOUR_CYAN, 0, os_ACTION_OVERWRITE, 0);
|
||||
os_plot(os_MOVE_TO, x + box->x * 2, y - box->y * 2);
|
||||
os_plot(os_PLOT_SOLID | os_PLOT_BY, box->width * 2, 0);
|
||||
os_plot(os_PLOT_SOLID | os_PLOT_BY, 0, -box->height * 2);
|
||||
os_plot(os_PLOT_SOLID | os_PLOT_BY, -box->width * 2, 0);
|
||||
os_plot(os_PLOT_SOLID | os_PLOT_BY, 0, box->height * 2);
|
||||
|
||||
if (box->type == BOX_INLINE) {
|
||||
font_paint(font, box->text,
|
||||
font_OS_UNITS | font_GIVEN_LENGTH | font_GIVEN_FONT | font_KERN,
|
||||
x + box->x * 2, y - box->y * 2 - box->height * 2,
|
||||
0, 0,
|
||||
box->length);
|
||||
|
||||
/* colourtrans_set_gcol(os_COLOUR_BLACK, 0, os_ACTION_OVERWRITE, 0);
|
||||
os_plot(os_MOVE_TO, x + box->x * 2, y - box->y * 2);
|
||||
os_writen(box->text, box->length);*/
|
||||
/* } else if (box->type != BOX_INLINE_CONTAINER) { */
|
||||
/* colourtrans_set_gcol((0xffffff - ((name[0] << 16) | (name[1] << 8) |
|
||||
name[0])) << 8,
|
||||
0, os_ACTION_OVERWRITE, 0);*/
|
||||
/*
|
||||
colourtrans_set_gcol(os_COLOUR_RED, 0, os_ACTION_OVERWRITE, 0);
|
||||
os_plot(os_MOVE_TO, x + box->x * 2, y - box->y * 2);
|
||||
os_write0(name);*/
|
||||
}
|
||||
|
||||
for (c = box->children; c != 0; c = c->next)
|
||||
if (c->type != BOX_FLOAT_LEFT && c->type != BOX_FLOAT_RIGHT)
|
||||
redraw(c, x + box->x * 2, y - box->y * 2);
|
||||
|
||||
for (c = box->float_children; c != 0; c = c->next_float)
|
||||
redraw(c, x + box->x * 2, y - box->y * 2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void render_window(struct box * box)
|
||||
{
|
||||
wimp_t task;
|
||||
wimp_window window = {
|
||||
{ 0, 0, 1200, 2000 },
|
||||
0, 0,
|
||||
wimp_TOP,
|
||||
wimp_WINDOW_MOVEABLE | wimp_WINDOW_NEW_FORMAT | wimp_WINDOW_BACK_ICON |
|
||||
wimp_WINDOW_CLOSE_ICON | wimp_WINDOW_TITLE_ICON | wimp_WINDOW_VSCROLL |
|
||||
wimp_WINDOW_SIZE_ICON | wimp_WINDOW_TOGGLE_ICON,
|
||||
wimp_COLOUR_BLACK, wimp_COLOUR_LIGHT_GREY,
|
||||
wimp_COLOUR_BLACK, wimp_COLOUR_WHITE,
|
||||
wimp_COLOUR_DARK_GREY, wimp_COLOUR_MID_LIGHT_GREY,
|
||||
wimp_COLOUR_CREAM,
|
||||
0,
|
||||
{ 0, -2000, 1200, 0 },
|
||||
wimp_ICON_TEXT, 0,
|
||||
0,
|
||||
0, 0,
|
||||
{ "NetSurf" },
|
||||
0
|
||||
};
|
||||
wimp_w w;
|
||||
wimp_window_state state;
|
||||
wimp_block block;
|
||||
|
||||
task = wimp_initialise(wimp_VERSION_RO3, "NetSurf", 0, 0);
|
||||
window.extent.x1 = box->width * 2;
|
||||
window.extent.y0 = -box->height * 2;
|
||||
w = wimp_create_window(&window);
|
||||
state.w = w;
|
||||
wimp_get_window_state(&state);
|
||||
wimp_open_window((wimp_open *) &state);
|
||||
|
||||
while (1) {
|
||||
wimp_event_no event = wimp_poll(wimp_MASK_NULL, &block, 0);
|
||||
osbool more;
|
||||
switch (event) {
|
||||
case wimp_REDRAW_WINDOW_REQUEST:
|
||||
more = wimp_redraw_window(&block.redraw);
|
||||
wimp_set_font_colours(wimp_COLOUR_WHITE, wimp_COLOUR_BLACK);
|
||||
while (more) {
|
||||
redraw(box, block.redraw.box.x0 - block.redraw.xscroll,
|
||||
block.redraw.box.y1 - block.redraw.yscroll);
|
||||
more = wimp_get_rectangle(&block.redraw);
|
||||
}
|
||||
break;
|
||||
case wimp_OPEN_WINDOW_REQUEST:
|
||||
wimp_open_window(&block.open);
|
||||
break;
|
||||
case wimp_CLOSE_WINDOW_REQUEST:
|
||||
wimp_close_down(task);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
size_t write_data(void * data, size_t size, size_t nmemb, htmlParserCtxt * parser_context)
|
||||
{
|
||||
fprintf(stderr, "%i\n", size * nmemb);
|
||||
htmlParseChunk(parser_context, data, size * nmemb, 0);
|
||||
return size * nmemb;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct css_stylesheet * stylesheet;
|
||||
struct css_style * style = xcalloc(1, sizeof(struct css_style));
|
||||
struct css_selector * selector = xcalloc(1, sizeof(struct css_selector));
|
||||
xmlNode * c;
|
||||
xmlDoc * doc;
|
||||
struct box * doc_box = xcalloc(1, sizeof(struct box));
|
||||
struct box * html_box;
|
||||
char * f;
|
||||
CURL * curl;
|
||||
htmlParserCtxt * parser_context;
|
||||
|
||||
if (argc < 3) die("usage: render htmlfile cssfile");
|
||||
|
||||
parser_context = htmlCreatePushParserCtxt(0, 0, "", 0, argv[1],
|
||||
XML_CHAR_ENCODING_8859_1);
|
||||
if (parser_context == 0) die("htmlCreatePushParserCtxt failed");
|
||||
|
||||
fprintf(stderr, "Fetching %s...\n", argv[1]);
|
||||
curl = curl_easy_init();
|
||||
if (curl == 0) die("curl_easy_init failed");
|
||||
curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, parser_context);
|
||||
curl_easy_perform(curl);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
htmlParseChunk(parser_context, "", 0, 1);
|
||||
doc = parser_context->myDoc;
|
||||
|
||||
/* fprintf(stderr, "Parsing html...\n");
|
||||
doc = htmlParseFile(argv[1], 0);
|
||||
if (doc == 0) die("htmlParseFile failed");*/
|
||||
|
||||
for (c = doc->children; c != 0 && c->type != XML_ELEMENT_NODE; c = c->next)
|
||||
;
|
||||
if (c == 0) die("no element in document");
|
||||
if (strcmp((const char *) c->name, "html")) die("document is not html");
|
||||
|
||||
fprintf(stderr, "Parsing css...\n");
|
||||
f = load(argv[2]);
|
||||
stylesheet = css_new_stylesheet();
|
||||
css_parse_stylesheet(stylesheet, f);
|
||||
/* css_dump_stylesheet(stylesheet);*/
|
||||
|
||||
font = font_find_font("Homerton.Medium", 192, 192, 0, 0, 0, 0);
|
||||
|
||||
memcpy(style, &css_base_style, sizeof(struct css_style));
|
||||
doc_box->type = BOX_BLOCK;
|
||||
doc_box->node = c;
|
||||
fprintf(stderr, "XML tree to box tree...\n");
|
||||
xml_to_box(c, style, stylesheet, &selector, 0, doc_box, 0);
|
||||
html_box = doc_box->children;
|
||||
box_dump(html_box, 0);
|
||||
|
||||
fprintf(stderr, "Layout document...\n");
|
||||
layout_document(html_box, 600);
|
||||
box_dump(html_box, 0);
|
||||
/* render_plain(html_box);*/
|
||||
|
||||
fprintf(stderr, "Rendering...\n");
|
||||
render_window(html_box);
|
||||
|
||||
font_lose_font(font);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
|
Loading…
Reference in New Issue
Block a user