mirror of
https://github.com/aseprite/aseprite.git
synced 2025-02-05 18:40:37 +00:00
Fixed the tests
This commit is contained in:
parent
7a0913c2cf
commit
c50df75059
@ -55,7 +55,7 @@ int main (int argc, char *argv[])
|
|||||||
ji_set_standard_theme();
|
ji_set_standard_theme();
|
||||||
|
|
||||||
jmanager_refresh_screen();
|
jmanager_refresh_screen();
|
||||||
ji_mouse_set_cursor(JI_CURSOR_NORMAL);
|
jmouse_set_cursor(JI_CURSOR_NORMAL);
|
||||||
|
|
||||||
jalert("Normal==First Alert||&Ok");
|
jalert("Normal==First Alert||&Ok");
|
||||||
jalert ("Error"
|
jalert ("Error"
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include <allegro.h>
|
#include <allegro.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "jinete/jinete/jinete.h"
|
#include "jinete/jinete.h"
|
||||||
|
|
||||||
static JWidget check, radio[12];
|
static JWidget check, radio[12];
|
||||||
|
|
||||||
|
@ -35,11 +35,11 @@
|
|||||||
|
|
||||||
FONT *my_font = NULL;
|
FONT *my_font = NULL;
|
||||||
|
|
||||||
void set_my_font (void);
|
void set_my_font(void);
|
||||||
void set_my_palette (void);
|
void set_my_palette(void);
|
||||||
JTheme my_theme_new (void);
|
JTheme my_theme_new(void);
|
||||||
|
|
||||||
int main (int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
JWidget manager, window, box1, box2, box3, box4, box5, button1, button2;
|
JWidget manager, window, box1, box2, box3, box4, box5, button1, button2;
|
||||||
JWidget label_username, label_password;
|
JWidget label_username, label_password;
|
||||||
@ -47,145 +47,145 @@ int main (int argc, char *argv[])
|
|||||||
JTheme my_theme;
|
JTheme my_theme;
|
||||||
|
|
||||||
/* Allegro stuff */
|
/* Allegro stuff */
|
||||||
allegro_init ();
|
allegro_init();
|
||||||
set_color_depth (16);
|
set_color_depth(16);
|
||||||
if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 320, 200, 0, 0) < 0) {
|
if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 320, 200, 0, 0) < 0) {
|
||||||
if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) < 0) {
|
if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) < 0) {
|
||||||
set_color_depth (8);
|
set_color_depth(8);
|
||||||
if (set_gfx_mode (GFX_AUTODETECT_WINDOWED, 320, 200, 0, 0) < 0) {
|
if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 320, 200, 0, 0) < 0) {
|
||||||
if (set_gfx_mode (GFX_AUTODETECT, 320, 200, 0, 0) < 0) {
|
if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) < 0) {
|
||||||
allegro_message ("%s\n", allegro_error);
|
allegro_message("%s\n", allegro_error);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
install_timer ();
|
install_timer();
|
||||||
install_keyboard ();
|
install_keyboard();
|
||||||
install_mouse ();
|
install_mouse();
|
||||||
|
|
||||||
/* Jinete initialization */
|
/* Jinete initialization */
|
||||||
manager = jmanager_new ();
|
manager = jmanager_new();
|
||||||
|
|
||||||
set_my_font ();
|
set_my_font();
|
||||||
set_my_palette ();
|
set_my_palette();
|
||||||
|
|
||||||
/* change to custom theme */
|
/* change to custom theme */
|
||||||
my_theme = my_theme_new ();
|
my_theme = my_theme_new();
|
||||||
ji_set_theme (my_theme);
|
ji_set_theme(my_theme);
|
||||||
|
|
||||||
window = jwindow_new ("Login");
|
window = jwindow_new("Login");
|
||||||
box1 = jbox_new (JI_VERTICAL);
|
box1 = jbox_new(JI_VERTICAL);
|
||||||
box2 = jbox_new (JI_HORIZONTAL);
|
box2 = jbox_new(JI_HORIZONTAL);
|
||||||
box3 = jbox_new (JI_VERTICAL | JI_HOMOGENEOUS);
|
box3 = jbox_new(JI_VERTICAL | JI_HOMOGENEOUS);
|
||||||
box4 = jbox_new (JI_VERTICAL | JI_HOMOGENEOUS);
|
box4 = jbox_new(JI_VERTICAL | JI_HOMOGENEOUS);
|
||||||
box5 = jbox_new (JI_HORIZONTAL | JI_HOMOGENEOUS);
|
box5 = jbox_new(JI_HORIZONTAL | JI_HOMOGENEOUS);
|
||||||
label_username = jlabel_new ("Username");
|
label_username = jlabel_new("Username");
|
||||||
label_password = jlabel_new ("Password");
|
label_password = jlabel_new("Password");
|
||||||
entry_username = jentry_new (32, "");
|
entry_username = jentry_new(32, "");
|
||||||
entry_password = jentry_new (32, "");
|
entry_password = jentry_new(32, "");
|
||||||
button1 = jbutton_new ("&OK");
|
button1 = jbutton_new("&OK");
|
||||||
button2 = jbutton_new ("&Cancel");
|
button2 = jbutton_new("&Cancel");
|
||||||
|
|
||||||
jentry_password (entry_password, TRUE);
|
jentry_password(entry_password, TRUE);
|
||||||
jwidget_magnetic (entry_username, TRUE);
|
jwidget_magnetic(entry_username, TRUE);
|
||||||
jwidget_magnetic (button1, TRUE);
|
jwidget_magnetic(button1, TRUE);
|
||||||
|
|
||||||
jwidget_add_child (window, box1);
|
jwidget_add_child(window, box1);
|
||||||
jwidget_add_child (box1, box2);
|
jwidget_add_child(box1, box2);
|
||||||
jwidget_add_child (box1, box5);
|
jwidget_add_child(box1, box5);
|
||||||
jwidget_add_child (box2, box3);
|
jwidget_add_child(box2, box3);
|
||||||
jwidget_add_child (box2, box4);
|
jwidget_add_child(box2, box4);
|
||||||
jwidget_add_child (box3, label_username);
|
jwidget_add_child(box3, label_username);
|
||||||
jwidget_add_child (box3, label_password);
|
jwidget_add_child(box3, label_password);
|
||||||
jwidget_add_child (box4, entry_username);
|
jwidget_add_child(box4, entry_username);
|
||||||
jwidget_add_child (box4, entry_password);
|
jwidget_add_child(box4, entry_password);
|
||||||
jwidget_add_child (box5, button1);
|
jwidget_add_child(box5, button1);
|
||||||
jwidget_add_child (box5, button2);
|
jwidget_add_child(box5, button2);
|
||||||
|
|
||||||
jwindow_sizeable (window, FALSE);
|
jwindow_sizeable(window, FALSE);
|
||||||
|
|
||||||
again:;
|
again:;
|
||||||
jwindow_open_fg (window);
|
jwindow_open_fg(window);
|
||||||
|
|
||||||
if (jwindow_get_killer (window) == button1) {
|
if (jwindow_get_killer(window) == button1) {
|
||||||
if (*jwidget_get_text (entry_username) &&
|
if (*jwidget_get_text(entry_username) &&
|
||||||
*jwidget_get_text (entry_password))
|
*jwidget_get_text(entry_password))
|
||||||
jalert ("Login Successful"
|
jalert("Login Successful"
|
||||||
"==Welcome \"%s\""
|
"==Welcome \"%s\""
|
||||||
"||&Done",
|
"||&Done",
|
||||||
jwidget_get_text (entry_username));
|
jwidget_get_text(entry_username));
|
||||||
else {
|
else {
|
||||||
jalert ("Login Failed"
|
jalert("Login Failed"
|
||||||
"==Try to use some username==and password"
|
"==Try to use some username==and password"
|
||||||
"||&OK");
|
"||&OK");
|
||||||
goto again;
|
goto again;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jwidget_free (window);
|
jwidget_free(window);
|
||||||
|
|
||||||
jtheme_free (my_theme);
|
jtheme_free(my_theme);
|
||||||
jmanager_free (manager);
|
jmanager_free(manager);
|
||||||
|
|
||||||
if (my_font)
|
if (my_font)
|
||||||
destroy_font (my_font);
|
destroy_font(my_font);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
END_OF_MAIN ();
|
END_OF_MAIN();
|
||||||
|
|
||||||
void set_my_font (void)
|
void set_my_font(void)
|
||||||
{
|
{
|
||||||
char buf[512], argv0[512];
|
char buf[512], argv0[512];
|
||||||
get_executable_name (argv0, sizeof (argv0));
|
get_executable_name(argv0, sizeof(argv0));
|
||||||
replace_filename (buf, argv0, "zerohour.ttf", sizeof (buf));
|
replace_filename(buf, argv0, "zerohour.ttf", sizeof(buf));
|
||||||
my_font = ji_font_load_ttf (buf);
|
my_font = ji_font_load_ttf(buf);
|
||||||
if (my_font) {
|
if (my_font) {
|
||||||
font = my_font;
|
font = my_font;
|
||||||
ji_font_set_size (font, 8);
|
ji_font_set_size(font, 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_my_palette (void)
|
void set_my_palette(void)
|
||||||
{
|
{
|
||||||
char buf[512], argv0[512];
|
char buf[512], argv0[512];
|
||||||
BITMAP *bmp;
|
BITMAP *bmp;
|
||||||
PALETTE pal;
|
PALETTE pal;
|
||||||
get_executable_name (argv0, sizeof (argv0));
|
get_executable_name(argv0, sizeof(argv0));
|
||||||
replace_filename (buf, argv0, "pal17.pcx", sizeof (buf));
|
replace_filename(buf, argv0, "pal17.pcx", sizeof(buf));
|
||||||
bmp = load_bitmap (buf, pal);
|
bmp = load_bitmap(buf, pal);
|
||||||
if (bmp) {
|
if (bmp) {
|
||||||
set_palette (pal);
|
set_palette(pal);
|
||||||
rgb_map = malloc (sizeof (RGB_MAP));
|
rgb_map = malloc(sizeof(RGB_MAP));
|
||||||
create_rgb_table (rgb_map, pal, NULL);
|
create_rgb_table(rgb_map, pal, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
/* Theme */
|
/* Theme */
|
||||||
|
|
||||||
static void theme_regen (void);
|
static void theme_regen(void);
|
||||||
static void theme_set_cursor (int type);
|
static BITMAP *theme_set_cursor(int type, int *focus_x, int *focus_y);
|
||||||
static void theme_init_widget (JWidget widget);
|
static void theme_init_widget(JWidget widget);
|
||||||
static JRegion theme_get_window_mask (JWidget widget);
|
static JRegion theme_get_window_mask(JWidget widget);
|
||||||
|
|
||||||
static void theme_draw_box (JWidget widget);
|
static void theme_draw_box(JWidget widget);
|
||||||
static void theme_draw_button (JWidget widget);
|
static void theme_draw_button(JWidget widget);
|
||||||
static void theme_draw_entry (JWidget widget);
|
static void theme_draw_entry(JWidget widget);
|
||||||
static void theme_draw_label (JWidget widget);
|
static void theme_draw_label(JWidget widget);
|
||||||
static void theme_draw_window (JWidget widget);
|
static void theme_draw_window(JWidget widget);
|
||||||
|
|
||||||
static void draw_rect (JRect rect, int color, bool invert);
|
static void draw_rect(JRect rect, int color, bool invert);
|
||||||
static void draw_edge (JRect rect, int color, bool invert);
|
static void draw_edge(JRect rect, int color, bool invert);
|
||||||
static void draw_entry_cursor (JWidget widget, int x, int y);
|
static void draw_entry_cursor(JWidget widget, int x, int y);
|
||||||
|
|
||||||
JTheme my_theme_new (void)
|
JTheme my_theme_new(void)
|
||||||
{
|
{
|
||||||
JTheme theme;
|
JTheme theme;
|
||||||
|
|
||||||
theme = jtheme_new ();
|
theme = jtheme_new();
|
||||||
if (!theme)
|
if (!theme)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -198,26 +198,26 @@ JTheme my_theme_new (void)
|
|||||||
theme->init_widget = theme_init_widget;
|
theme->init_widget = theme_init_widget;
|
||||||
theme->get_window_mask = theme_get_window_mask;
|
theme->get_window_mask = theme_get_window_mask;
|
||||||
|
|
||||||
jtheme_set_method (theme, JI_BOX, theme_draw_box);
|
jtheme_set_method(theme, JI_BOX, theme_draw_box);
|
||||||
jtheme_set_method (theme, JI_BUTTON, theme_draw_button);
|
jtheme_set_method(theme, JI_BUTTON, theme_draw_button);
|
||||||
jtheme_set_method (theme, JI_ENTRY, theme_draw_entry);
|
jtheme_set_method(theme, JI_ENTRY, theme_draw_entry);
|
||||||
jtheme_set_method (theme, JI_LABEL, theme_draw_label);
|
jtheme_set_method(theme, JI_LABEL, theme_draw_label);
|
||||||
jtheme_set_method (theme, JI_WINDOW, theme_draw_window);
|
jtheme_set_method(theme, JI_WINDOW, theme_draw_window);
|
||||||
|
|
||||||
return theme;
|
return theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void theme_regen (void)
|
static void theme_regen(void)
|
||||||
{
|
{
|
||||||
ji_get_theme ()->desktop_color = makecol (0, 128, 196);
|
ji_get_theme()->desktop_color = makecol(0, 128, 196);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void theme_set_cursor (int type)
|
static BITMAP *theme_set_cursor(int type, int *focus_x, int *focus_y)
|
||||||
{
|
{
|
||||||
set_mouse_sprite (NULL); /* use default Allegro cursor */
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void theme_init_widget (JWidget widget)
|
static void theme_init_widget(JWidget widget)
|
||||||
{
|
{
|
||||||
#define BORDER(n) \
|
#define BORDER(n) \
|
||||||
widget->border_width.l = n; \
|
widget->border_width.l = n; \
|
||||||
@ -234,259 +234,259 @@ static void theme_init_widget (JWidget widget)
|
|||||||
switch (widget->draw_type) {
|
switch (widget->draw_type) {
|
||||||
|
|
||||||
case JI_BOX:
|
case JI_BOX:
|
||||||
BORDER (4);
|
BORDER(4);
|
||||||
widget->child_spacing = 2;
|
widget->child_spacing = 2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JI_BUTTON:
|
case JI_BUTTON:
|
||||||
BORDER (5);
|
BORDER(5);
|
||||||
widget->child_spacing = 0;
|
widget->child_spacing = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JI_ENTRY:
|
case JI_ENTRY:
|
||||||
BORDER (6);
|
BORDER(6);
|
||||||
widget->child_spacing = 0;
|
widget->child_spacing = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JI_WINDOW:
|
case JI_WINDOW:
|
||||||
BORDER4 (7, 7+jwidget_get_text_height (widget)+7, 7, 7);
|
BORDER4(7, 7+jwidget_get_text_height(widget)+7, 7, 7);
|
||||||
widget->child_spacing = 1;
|
widget->child_spacing = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static JRegion theme_get_window_mask (JWidget widget)
|
static JRegion theme_get_window_mask(JWidget widget)
|
||||||
{
|
{
|
||||||
JRegion reg1 = jregion_new (NULL, 0);
|
JRegion reg1 = jregion_new(NULL, 0);
|
||||||
JRegion reg2 = jregion_new (NULL, 0);
|
JRegion reg2 = jregion_new(NULL, 0);
|
||||||
int table[2] = { 2, 1 };
|
int table[2] = { 2, 1 };
|
||||||
JRect rect = jrect_new (0, 0, 0, 0);
|
JRect rect = jrect_new(0, 0, 0, 0);
|
||||||
JRect pos = jwidget_get_rect (widget);
|
JRect pos = jwidget_get_rect(widget);
|
||||||
int c;
|
int c;
|
||||||
bool overlap;
|
bool overlap;
|
||||||
|
|
||||||
for (c=0; c<2; c++) {
|
for (c=0; c<2; c++) {
|
||||||
jrect_replace (rect,
|
jrect_replace(rect,
|
||||||
pos->x1+table[c], pos->y1+c,
|
pos->x1+table[c], pos->y1+c,
|
||||||
pos->x2-table[c], pos->y1+c+1);
|
pos->x2-table[c], pos->y1+c+1);
|
||||||
jregion_reset (reg2, rect);
|
jregion_reset(reg2, rect);
|
||||||
jregion_append (reg1, reg2);
|
jregion_append(reg1, reg2);
|
||||||
|
|
||||||
jrect_replace (rect,
|
jrect_replace(rect,
|
||||||
pos->x1+table[c], pos->y2-c-1,
|
pos->x1+table[c], pos->y2-c-1,
|
||||||
pos->x2-table[c], pos->y2-c);
|
pos->x2-table[c], pos->y2-c);
|
||||||
jregion_reset (reg2, rect);
|
jregion_reset(reg2, rect);
|
||||||
jregion_append (reg1, reg2);
|
jregion_append(reg1, reg2);
|
||||||
}
|
}
|
||||||
|
|
||||||
jrect_replace (rect, pos->x1, pos->y1+c, pos->x2, pos->y2-c);
|
jrect_replace(rect, pos->x1, pos->y1+c, pos->x2, pos->y2-c);
|
||||||
jregion_reset (reg2, rect);
|
jregion_reset(reg2, rect);
|
||||||
jregion_append (reg1, reg2);
|
jregion_append(reg1, reg2);
|
||||||
|
|
||||||
jrect_free (pos);
|
jrect_free(pos);
|
||||||
jrect_free (rect);
|
jrect_free(rect);
|
||||||
jregion_free (reg2);
|
jregion_free(reg2);
|
||||||
|
|
||||||
jregion_validate (reg1, &overlap);
|
jregion_validate(reg1, &overlap);
|
||||||
return reg1;
|
return reg1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void theme_draw_box (JWidget widget)
|
static void theme_draw_box(JWidget widget)
|
||||||
{
|
{
|
||||||
JWidget window = jwidget_get_window (widget);
|
JWidget window = jwidget_get_window(widget);
|
||||||
if (window) {
|
if (window) {
|
||||||
JRect pos = jwidget_get_child_rect (window);
|
JRect pos = jwidget_get_child_rect(window);
|
||||||
draw_edge (pos, makecol (255, 196, 64), FALSE);
|
draw_edge(pos, makecol(255, 196, 64), FALSE);
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
draw_rect (pos, makecol (255, 196, 64), FALSE);
|
draw_rect(pos, makecol(255, 196, 64), FALSE);
|
||||||
jrect_free (pos);
|
jrect_free(pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void theme_draw_button (JWidget widget)
|
static void theme_draw_button(JWidget widget)
|
||||||
{
|
{
|
||||||
JRect pos = jwidget_get_rect (widget);
|
JRect pos = jwidget_get_rect(widget);
|
||||||
int fg, bg;
|
int fg, bg;
|
||||||
|
|
||||||
if (jwidget_is_disabled (widget)) {
|
if (jwidget_is_disabled(widget)) {
|
||||||
fg = makecol (196, 196, 196);
|
fg = makecol(196, 196, 196);
|
||||||
bg = makecol (128, 128, 128);
|
bg = makecol(128, 128, 128);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fg = makecol (0, 0, 0);
|
fg = makecol(0, 0, 0);
|
||||||
bg = jwidget_has_mouse (widget) ? makecol (64, 224, 255):
|
bg = jwidget_has_mouse(widget) ? makecol(64, 224, 255):
|
||||||
makecol (0, 196, 255);
|
makecol(0, 196, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_edge (pos, makecol (255, 196, 64), TRUE);
|
draw_edge(pos, makecol(255, 196, 64), TRUE);
|
||||||
|
|
||||||
if (jwidget_has_focus (widget)) {
|
if (jwidget_has_focus (widget)) {
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
draw_edge (pos, makecol (0, 0, 0), FALSE);
|
draw_edge(pos, makecol(0, 0, 0), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
draw_edge (pos, bg, jwidget_is_selected (widget));
|
draw_edge(pos, bg, jwidget_is_selected(widget));
|
||||||
|
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
draw_edge (pos, makecol (128, 128, 128), !jwidget_is_selected (widget));
|
draw_edge(pos, makecol(128, 128, 128), !jwidget_is_selected(widget));
|
||||||
|
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
draw_rect (pos, bg, jwidget_is_selected (widget));
|
draw_rect(pos, bg, jwidget_is_selected(widget));
|
||||||
|
|
||||||
if (widget->text) {
|
if (widget->text) {
|
||||||
struct jrect text;
|
struct jrect text;
|
||||||
|
|
||||||
jwidget_get_texticon_info (widget, NULL, &text, NULL, 0, 0, 0);
|
jwidget_get_texticon_info(widget, NULL, &text, NULL, 0, 0, 0);
|
||||||
|
|
||||||
if (jwidget_is_selected (widget))
|
if (jwidget_is_selected(widget))
|
||||||
jrect_displace (&text, 1, 1);
|
jrect_displace(&text, 1, 1);
|
||||||
|
|
||||||
jdraw_text (widget->text_font, widget->text, text.x1+1, text.y1+1,
|
jdraw_text(widget->text_font, widget->text, text.x1+1, text.y1+1,
|
||||||
makecol (255, 255, 255), bg, FALSE);
|
makecol(255, 255, 255), bg, FALSE);
|
||||||
jdraw_text (widget->text_font, widget->text,
|
jdraw_text(widget->text_font, widget->text,
|
||||||
text.x1, text.y1, fg, bg, FALSE);
|
text.x1, text.y1, fg, bg, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
jrect_free (pos);
|
jrect_free(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void theme_draw_entry (JWidget widget)
|
static void theme_draw_entry(JWidget widget)
|
||||||
{
|
{
|
||||||
int scroll, cursor, state, selbeg, selend;
|
int scroll, cursor, state, selbeg, selend;
|
||||||
bool password = jentry_is_password (widget);
|
bool password = jentry_is_password(widget);
|
||||||
const char *text = widget->text;
|
const char *text = widget->text;
|
||||||
int c, ch, x, y, w, fg, bg;
|
int c, ch, x, y, w, fg, bg;
|
||||||
int cursor_x;
|
int cursor_x;
|
||||||
JRect pos = jwidget_get_rect (widget);
|
JRect pos = jwidget_get_rect(widget);
|
||||||
|
|
||||||
jtheme_entry_info (widget, &scroll, &cursor, &state, &selbeg, &selend);
|
jtheme_entry_info(widget, &scroll, &cursor, &state, &selbeg, &selend);
|
||||||
|
|
||||||
bg = makecol (255, 255, 255);
|
bg = makecol(255, 255, 255);
|
||||||
|
|
||||||
/* 1st border */
|
/* 1st border */
|
||||||
draw_edge (pos, makecol (255, 196, 64), TRUE);
|
draw_edge(pos, makecol (255, 196, 64), TRUE);
|
||||||
|
|
||||||
/* 2nd border */
|
/* 2nd border */
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
if (jwidget_has_focus (widget)) {
|
if (jwidget_has_focus(widget)) {
|
||||||
jdraw_rect (pos, makecol (0, 0, 0));
|
jdraw_rect(pos, makecol(0, 0, 0));
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
}
|
}
|
||||||
draw_edge (pos, makecol (192, 192, 192), FALSE);
|
draw_edge(pos, makecol(192, 192, 192), FALSE);
|
||||||
|
|
||||||
/* background */
|
/* background */
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
jdraw_rectshade (pos, JI_COLOR_SHADE (bg, -64, -64, -64), bg,
|
jdraw_rectshade(pos, JI_COLOR_SHADE(bg, -64, -64, -64), bg,
|
||||||
JI_VERTICAL);
|
JI_VERTICAL);
|
||||||
|
|
||||||
/* draw the text */
|
/* draw the text */
|
||||||
x = widget->rc->x1 + widget->border_width.l;
|
x = widget->rc->x1 + widget->border_width.l;
|
||||||
y = (widget->rc->y1+widget->rc->y2)/2 - jwidget_get_text_height (widget)/2;
|
y = (widget->rc->y1+widget->rc->y2)/2 - jwidget_get_text_height(widget)/2;
|
||||||
|
|
||||||
for (c=scroll; ugetat (text, c); c++) {
|
for (c=scroll; ugetat (text, c); c++) {
|
||||||
ch = password ? '*': ugetat (text, c);
|
ch = password ? '*': ugetat (text, c);
|
||||||
|
|
||||||
/* normal text */
|
/* normal text */
|
||||||
bg = -1;
|
bg = -1;
|
||||||
fg = makecol (0, 0, 0);
|
fg = makecol(0, 0, 0);
|
||||||
|
|
||||||
/* selected */
|
/* selected */
|
||||||
if ((c >= selbeg) && (c <= selend)) {
|
if ((c >= selbeg) && (c <= selend)) {
|
||||||
if (jwidget_has_focus (widget))
|
if (jwidget_has_focus(widget))
|
||||||
bg = makecol (44, 76, 145);
|
bg = makecol(44, 76, 145);
|
||||||
else
|
else
|
||||||
bg = makecol (128, 128, 128);
|
bg = makecol(128, 128, 128);
|
||||||
fg = makecol (255, 255, 255);
|
fg = makecol(255, 255, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* disabled */
|
/* disabled */
|
||||||
if (jwidget_is_disabled (widget)) {
|
if (jwidget_is_disabled(widget)) {
|
||||||
bg = -1;
|
bg = -1;
|
||||||
fg = makecol (128, 128, 128);
|
fg = makecol(128, 128, 128);
|
||||||
}
|
}
|
||||||
|
|
||||||
w = ji_font_char_len (widget->text_font, ch);
|
w = ji_font_char_len(widget->text_font, ch);
|
||||||
if (x+w > widget->rc->x2-3)
|
if (x+w > widget->rc->x2-3)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cursor_x = x;
|
cursor_x = x;
|
||||||
jdraw_char (widget->text_font, ch, x, y, fg,
|
jdraw_char(widget->text_font, ch, x, y, fg,
|
||||||
bg >= 0 ? bg: makecol (192, 192, 192), bg >= 0);
|
bg >= 0 ? bg: makecol (192, 192, 192), bg >= 0);
|
||||||
x += w;
|
x += w;
|
||||||
|
|
||||||
/* cursor */
|
/* cursor */
|
||||||
if ((c == cursor) && (state) && (jwidget_has_focus (widget)))
|
if ((c == cursor) && (state) && (jwidget_has_focus(widget)))
|
||||||
draw_entry_cursor (widget, cursor_x, y);
|
draw_entry_cursor(widget, cursor_x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* draw the cursor if it is next of the last character */
|
/* draw the cursor if it is next of the last character */
|
||||||
if ((c == cursor) && (state) &&
|
if ((c == cursor) && (state) &&
|
||||||
(jwidget_has_focus (widget)) &&
|
(jwidget_has_focus(widget)) &&
|
||||||
(jwidget_is_enabled (widget)))
|
(jwidget_is_enabled(widget)))
|
||||||
draw_entry_cursor (widget, x, y);
|
draw_entry_cursor(widget, x, y);
|
||||||
|
|
||||||
jrect_free (pos);
|
jrect_free(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void theme_draw_label (JWidget widget)
|
static void theme_draw_label(JWidget widget)
|
||||||
{
|
{
|
||||||
/* draw background as Box */
|
/* draw background as Box */
|
||||||
theme_draw_box (widget);
|
theme_draw_box(widget);
|
||||||
|
|
||||||
if (widget->text) {
|
if (widget->text) {
|
||||||
struct jrect text;
|
struct jrect text;
|
||||||
|
|
||||||
jwidget_get_texticon_info (widget, NULL, &text, NULL, 0, 0, 0);
|
jwidget_get_texticon_info(widget, NULL, &text, NULL, 0, 0, 0);
|
||||||
|
|
||||||
jdraw_text (widget->text_font, widget->text, text.x1+1, text.y1+1,
|
jdraw_text(widget->text_font, widget->text, text.x1+1, text.y1+1,
|
||||||
makecol (0, 0, 0), makecol (196, 128, 0), FALSE);
|
makecol(0, 0, 0), makecol(196, 128, 0), FALSE);
|
||||||
jdraw_text (widget->text_font, widget->text, text.x1, text.y1,
|
jdraw_text(widget->text_font, widget->text, text.x1, text.y1,
|
||||||
makecol (255, 255, 255), makecol (196, 128, 0), FALSE);
|
makecol(255, 255, 255), makecol(196, 128, 0), FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void theme_draw_window (JWidget widget)
|
static void theme_draw_window(JWidget widget)
|
||||||
{
|
{
|
||||||
JRect pos;
|
JRect pos;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
pos = jwidget_get_rect (widget);
|
pos = jwidget_get_rect(widget);
|
||||||
|
|
||||||
/* borders */
|
/* borders */
|
||||||
for (c=0; c<3; c++) {
|
for (c=0; c<3; c++) {
|
||||||
jdraw_rectedge (pos,
|
jdraw_rectedge(pos,
|
||||||
JI_COLOR_SHADE (makecol (0, 127, 255), +90, +90, +90),
|
JI_COLOR_SHADE(makecol(0, 127, 255), +90, +90, +90),
|
||||||
JI_COLOR_SHADE (makecol (0, 127, 255), -90, -90, -90));
|
JI_COLOR_SHADE(makecol(0, 127, 255), -90, -90, -90));
|
||||||
jrect_shrink (pos, 1);
|
jrect_shrink(pos, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* background */
|
/* background */
|
||||||
draw_rect (pos, makecol (0, 127, 255), FALSE);
|
draw_rect(pos, makecol(0, 127, 255), FALSE);
|
||||||
|
|
||||||
/* title bar */
|
/* title bar */
|
||||||
pos->x1 += 8;
|
pos->x1 += 8;
|
||||||
pos->y1 += 6;
|
pos->y1 += 6;
|
||||||
jdraw_text (widget->text_font, widget->text, pos->x1+1, pos->y1+1,
|
jdraw_text(widget->text_font, widget->text, pos->x1+1, pos->y1+1,
|
||||||
makecol (0, 0, 0), makecol (0, 127, 255), FALSE);
|
makecol(0, 0, 0), makecol(0, 127, 255), FALSE);
|
||||||
jdraw_text (widget->text_font, widget->text, pos->x1, pos->y1,
|
jdraw_text(widget->text_font, widget->text, pos->x1, pos->y1,
|
||||||
makecol (255, 255, 255), makecol (0, 127, 255), FALSE);
|
makecol(255, 255, 255), makecol(0, 127, 255), FALSE);
|
||||||
|
|
||||||
/* border to client area */
|
/* border to client area */
|
||||||
jrect_free (pos);
|
jrect_free(pos);
|
||||||
pos = jwidget_get_child_rect (widget);
|
pos = jwidget_get_child_rect(widget);
|
||||||
jrect_stretch (pos, 1);
|
jrect_stretch(pos, 1);
|
||||||
jdraw_rectedge (pos,
|
jdraw_rectedge(pos,
|
||||||
JI_COLOR_SHADE (makecol (0, 127, 255), -32, -32, -32),
|
JI_COLOR_SHADE(makecol(0, 127, 255), -32, -32, -32),
|
||||||
JI_COLOR_SHADE (makecol (0, 127, 255), +32, +32, +32));
|
JI_COLOR_SHADE(makecol(0, 127, 255), +32, +32, +32));
|
||||||
jrect_free (pos);
|
jrect_free(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_rect (JRect rect, int color, bool invert)
|
static void draw_rect(JRect rect, int color, bool invert)
|
||||||
{
|
{
|
||||||
JRect p = jrect_new (0, 0, 0, 0);
|
JRect p = jrect_new(0, 0, 0, 0);
|
||||||
int c1 = JI_COLOR_SHADE (color, +32, +32, +32);
|
int c1 = JI_COLOR_SHADE(color, +32, +32, +32);
|
||||||
int c2 = JI_COLOR_SHADE (color, -32, -32, -32);
|
int c2 = JI_COLOR_SHADE(color, -32, -32, -32);
|
||||||
int c, h = 3;
|
int c, h = 3;
|
||||||
|
|
||||||
if (invert) {
|
if (invert) {
|
||||||
@ -495,23 +495,23 @@ static void draw_rect (JRect rect, int color, bool invert)
|
|||||||
c2 = c;
|
c2 = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
jrect_replace (p, rect->x1, rect->y1, rect->x2, rect->y1+h);
|
jrect_replace(p, rect->x1, rect->y1, rect->x2, rect->y1+h);
|
||||||
jdraw_rectshade (p, c1, color, JI_VERTICAL);
|
jdraw_rectshade(p, c1, color, JI_VERTICAL);
|
||||||
|
|
||||||
jrect_replace (p, rect->x1, rect->y1+h, rect->x2, rect->y2-h);
|
jrect_replace(p, rect->x1, rect->y1+h, rect->x2, rect->y2-h);
|
||||||
jdraw_rectfill (p, color);
|
jdraw_rectfill(p, color);
|
||||||
|
|
||||||
jrect_replace (p, rect->x1, rect->y2-h, rect->x2, rect->y2);
|
jrect_replace(p, rect->x1, rect->y2-h, rect->x2, rect->y2);
|
||||||
jdraw_rectshade (p, color, c2, JI_VERTICAL);
|
jdraw_rectshade(p, color, c2, JI_VERTICAL);
|
||||||
|
|
||||||
jrect_free (p);
|
jrect_free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_edge (JRect rect, int color, bool invert)
|
static void draw_edge(JRect rect, int color, bool invert)
|
||||||
{
|
{
|
||||||
JRect p = jrect_new (0, 0, 0, 0);
|
JRect p = jrect_new(0, 0, 0, 0);
|
||||||
int c1 = JI_COLOR_SHADE (color, +90, +90, +90);
|
int c1 = JI_COLOR_SHADE(color, +90, +90, +90);
|
||||||
int c2 = JI_COLOR_SHADE (color, -90, -90, -90);
|
int c2 = JI_COLOR_SHADE(color, -90, -90, -90);
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
if (invert) {
|
if (invert) {
|
||||||
@ -520,25 +520,25 @@ static void draw_edge (JRect rect, int color, bool invert)
|
|||||||
c2 = c;
|
c2 = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
jrect_replace (p, rect->x1, rect->y1, rect->x2, rect->y1+1);
|
jrect_replace(p, rect->x1, rect->y1, rect->x2, rect->y1+1);
|
||||||
jdraw_rectshade (p, c1, color, JI_HORIZONTAL);
|
jdraw_rectshade(p, c1, color, JI_HORIZONTAL);
|
||||||
|
|
||||||
jrect_moveto (p, p->x1, rect->y2-1);
|
jrect_moveto(p, p->x1, rect->y2-1);
|
||||||
jdraw_rectshade (p, color, c2, JI_HORIZONTAL);
|
jdraw_rectshade(p, color, c2, JI_HORIZONTAL);
|
||||||
|
|
||||||
jrect_replace (p, rect->x1, rect->y1, rect->x1+1, rect->y2);
|
jrect_replace(p, rect->x1, rect->y1, rect->x1+1, rect->y2);
|
||||||
jdraw_rectshade (p, c1, color, JI_VERTICAL);
|
jdraw_rectshade(p, c1, color, JI_VERTICAL);
|
||||||
|
|
||||||
jrect_moveto (p, rect->x2-1, p->y1);
|
jrect_moveto(p, rect->x2-1, p->y1);
|
||||||
jdraw_rectshade (p, color, c2, JI_VERTICAL);
|
jdraw_rectshade(p, color, c2, JI_VERTICAL);
|
||||||
|
|
||||||
jrect_free (p);
|
jrect_free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_entry_cursor (JWidget widget, int x, int y)
|
static void draw_entry_cursor(JWidget widget, int x, int y)
|
||||||
{
|
{
|
||||||
int h = jwidget_get_text_height (widget);
|
int h = jwidget_get_text_height(widget);
|
||||||
|
|
||||||
vline (ji_screen, x, y-1, y+h, makecol (0, 0, 0));
|
vline(ji_screen, x, y-1, y+h, makecol(0, 0, 0));
|
||||||
vline (ji_screen, x+1, y-1, y+h, makecol (0, 0, 0));
|
vline(ji_screen, x+1, y-1, y+h, makecol(0, 0, 0));
|
||||||
}
|
}
|
||||||
|
@ -40,40 +40,40 @@ int main (int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
JWidget manager, window, box, check1, check2, button1, button2;
|
JWidget manager, window, box, check1, check2, button1, button2;
|
||||||
|
|
||||||
allegro_init ();
|
allegro_init();
|
||||||
if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 320, 200, 0, 0) < 0) {
|
if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 320, 200, 0, 0) < 0) {
|
||||||
if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) < 0) {
|
if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) < 0) {
|
||||||
allegro_message("%s\n", allegro_error);
|
allegro_message("%s\n", allegro_error);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
install_timer ();
|
install_timer();
|
||||||
install_keyboard ();
|
install_keyboard();
|
||||||
install_mouse ();
|
install_mouse();
|
||||||
|
|
||||||
manager = jmanager_new ();
|
manager = jmanager_new();
|
||||||
ji_set_standard_theme ();
|
ji_set_standard_theme();
|
||||||
|
|
||||||
window = jwindow_new ("Example 18");
|
window = jwindow_new("Example 18");
|
||||||
box = jbox_new (JI_VERTICAL | JI_HOMOGENEOUS);
|
box = jbox_new(JI_VERTICAL | JI_HOMOGENEOUS);
|
||||||
check1 = jcheck_new ("Check &1");
|
check1 = jcheck_new("Check &1");
|
||||||
check2 = jcheck_new ("Check &2");
|
check2 = jcheck_new("Check &2");
|
||||||
button1 = jbutton_new ("&OK");
|
button1 = jbutton_new("&OK");
|
||||||
button2 = jbutton_new ("&Cancel");
|
button2 = jbutton_new("&Cancel");
|
||||||
|
|
||||||
jwidget_add_tip (button1, "This is a tip for \"OK\" button");
|
jwidget_add_tip(button1, "This is a tip for \"OK\" button");
|
||||||
jwidget_add_tip (button2, "This is a tip for the \"Cancel\" button");
|
jwidget_add_tip(button2, "This is a tip for the \"Cancel\" button");
|
||||||
|
|
||||||
jwidget_add_child (window, box);
|
jwidget_add_child(window, box);
|
||||||
jwidget_add_child (box, check1);
|
jwidget_add_child(box, check1);
|
||||||
jwidget_add_child (box, check2);
|
jwidget_add_child(box, check2);
|
||||||
jwidget_add_child (box, button1);
|
jwidget_add_child(box, button1);
|
||||||
jwidget_add_child (box, button2);
|
jwidget_add_child(box, button2);
|
||||||
|
|
||||||
jwindow_open_bg (window);
|
jwindow_open_bg(window);
|
||||||
|
|
||||||
jmanager_run (manager);
|
jmanager_run(manager);
|
||||||
jmanager_free (manager);
|
jmanager_free(manager);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,11 +82,11 @@ END_OF_MAIN();
|
|||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
/* tip */
|
/* tip */
|
||||||
|
|
||||||
static int tip_type (void);
|
static int tip_type(void);
|
||||||
static bool tip_hook (JWidget widget, JMessage msg);
|
static bool tip_hook(JWidget widget, JMessage msg);
|
||||||
|
|
||||||
static JWidget tip_window_new (const char *text);
|
static JWidget tip_window_new(const char *text);
|
||||||
static bool tip_window_hook (JWidget widget, JMessage msg);
|
static bool tip_window_hook(JWidget widget, JMessage msg);
|
||||||
|
|
||||||
typedef struct TipData {
|
typedef struct TipData {
|
||||||
int time;
|
int time;
|
||||||
@ -135,11 +135,11 @@ static bool tip_hook(JWidget widget, JMessage msg)
|
|||||||
JWidget window = tip_window_new (tip->text);
|
JWidget window = tip_window_new (tip->text);
|
||||||
int w = jrect_w(window->rc);
|
int w = jrect_w(window->rc);
|
||||||
int h = jrect_h(window->rc);
|
int h = jrect_h(window->rc);
|
||||||
jwindow_remap (window);
|
jwindow_remap(window);
|
||||||
jwindow_position (window,
|
jwindow_position(window,
|
||||||
MID (0, ji_mouse_x (0)-w/2, JI_SCREEN_W-w),
|
MID(0, jmouse_x(0)-w/2, JI_SCREEN_W-w),
|
||||||
MID (0, ji_mouse_y (0)-h/2, JI_SCREEN_H-h));
|
MID(0, jmouse_y(0)-h/2, JI_SCREEN_H-h));
|
||||||
jwindow_open (window);
|
jwindow_open(window);
|
||||||
|
|
||||||
tip->time = -1;
|
tip->time = -1;
|
||||||
}
|
}
|
||||||
@ -159,8 +159,9 @@ static JWidget tip_window_new(const char *text)
|
|||||||
jwidget_set_align(window, JI_CENTER | JI_MIDDLE);
|
jwidget_set_align(window, JI_CENTER | JI_MIDDLE);
|
||||||
|
|
||||||
/* remove decorative widgets */
|
/* remove decorative widgets */
|
||||||
JI_LIST_EACH_SAFE(window->children, link, next)
|
JI_LIST_FOR_EACH_SAFE(window->children, link, next) {
|
||||||
jwidget_free(link->data);
|
jwidget_free(link->data);
|
||||||
|
}
|
||||||
|
|
||||||
jwidget_add_hook(window, JI_WIDGET, tip_window_hook, NULL);
|
jwidget_add_hook(window, JI_WIDGET, tip_window_hook, NULL);
|
||||||
jwidget_init_theme(window);
|
jwidget_init_theme(window);
|
||||||
|
@ -133,7 +133,7 @@ void draw_gui()
|
|||||||
{
|
{
|
||||||
jwidget_dirty(manager);
|
jwidget_dirty(manager);
|
||||||
jwidget_flush_redraw(manager);
|
jwidget_flush_redraw(manager);
|
||||||
jmanager_dispatch_draw_messages();
|
//jmanager_dispatch_draw_messages();
|
||||||
}
|
}
|
||||||
|
|
||||||
float get_speed(void)
|
float get_speed(void)
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <allegro.h>
|
#include <allegro.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "jinete/jbase.h"
|
#include "jinete/jinete.h"
|
||||||
|
|
||||||
#include "raster/algo.h"
|
#include "raster/algo.h"
|
||||||
#include "raster/image.h"
|
#include "raster/image.h"
|
||||||
@ -131,18 +131,19 @@ void draw_bezier_path(BITMAP *bmp, BEZIER_PATH *path, int flags, int color)
|
|||||||
|
|
||||||
typedef struct Point { int x, y; } Point;
|
typedef struct Point { int x, y; } Point;
|
||||||
|
|
||||||
static void add_shape_seg(int x1, int y1, int x2, int y2, JList *shape)
|
static void add_shape_seg(int x1, int y1, int x2, int y2, JList shape)
|
||||||
{
|
{
|
||||||
Point *point = jnew (Point, 1);
|
Point *point = jnew(Point, 1);
|
||||||
point->x = x2;
|
point->x = x2;
|
||||||
point->y = y2;
|
point->y = y2;
|
||||||
*shape = jlist_append (*shape, point);
|
jlist_append(shape, point);
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_filled_bezier_path(BITMAP *bmp, BEZIER_PATH *path, int color)
|
void draw_filled_bezier_path(BITMAP *bmp, BEZIER_PATH *path, int color)
|
||||||
{
|
{
|
||||||
BEZIER_NODE *node;
|
BEZIER_NODE *node;
|
||||||
JList it, shape = NULL;
|
JList shape = jlist_new();
|
||||||
|
JLink link;
|
||||||
int c, vertices;
|
int c, vertices;
|
||||||
int *points;
|
int *points;
|
||||||
|
|
||||||
@ -157,7 +158,7 @@ void draw_filled_bezier_path(BITMAP *bmp, BEZIER_PATH *path, int color)
|
|||||||
node->next->prev_y,
|
node->next->prev_y,
|
||||||
node->next->x,
|
node->next->x,
|
||||||
node->next->y,
|
node->next->y,
|
||||||
(void *)&shape, (AlgoLine)add_shape_seg);
|
(void *)shape, (AlgoLine)add_shape_seg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node == path->last)
|
if (node == path->last)
|
||||||
@ -166,20 +167,24 @@ void draw_filled_bezier_path(BITMAP *bmp, BEZIER_PATH *path, int color)
|
|||||||
|
|
||||||
vertices = jlist_length(shape);
|
vertices = jlist_length(shape);
|
||||||
if (vertices > 0) {
|
if (vertices > 0) {
|
||||||
points = jmalloc(sizeof (int) * vertices * 2);
|
points = jmalloc(sizeof(int) * vertices * 2);
|
||||||
for (c=0, it=shape; it; it=it->next) {
|
|
||||||
points[c++] = ((Point *)it->data)->x;
|
c = 0;
|
||||||
points[c++] = ((Point *)it->data)->y;
|
JI_LIST_FOR_EACH(shape, link) {
|
||||||
|
points[c++] = ((Point *)link->data)->x;
|
||||||
|
points[c++] = ((Point *)link->data)->y;
|
||||||
}
|
}
|
||||||
polygon(bmp, vertices, points, color);
|
polygon(bmp, vertices, points, color);
|
||||||
ji_free(points);
|
jfree(points);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (it=shape; it; it=it->next)
|
JI_LIST_FOR_EACH(shape, link);
|
||||||
jfree(it->data);
|
jfree(link->data);
|
||||||
|
|
||||||
|
jlist_free(shape);
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_art_filled_bezier_path (BITMAP *bmp, BEZIER_PATH *path)
|
void draw_art_filled_bezier_path(BITMAP *bmp, BEZIER_PATH *path)
|
||||||
{
|
{
|
||||||
Image *image = image_new (IMAGE_RGB, SCREEN_W, SCREEN_H);
|
Image *image = image_new (IMAGE_RGB, SCREEN_W, SCREEN_H);
|
||||||
Path *art_path = path_new (NULL);
|
Path *art_path = path_new (NULL);
|
||||||
|
@ -54,15 +54,16 @@ void test ()
|
|||||||
|
|
||||||
/* build the layers */
|
/* build the layers */
|
||||||
{
|
{
|
||||||
Layer *layer = layer_new (sprite->imgtype);
|
Layer *layer = layer_new(sprite);
|
||||||
|
|
||||||
/* add this layer to the sprite */
|
/* add this layer to the sprite */
|
||||||
layer_add_layer (sprite->set, layer);
|
layer_add_layer(sprite->set, layer);
|
||||||
|
|
||||||
/* build the "stock" and the properties */
|
/* build the "stock" and the properties */
|
||||||
{
|
{
|
||||||
int i, c, image_index;
|
int i, c, image_index;
|
||||||
Image *image;
|
Image *image;
|
||||||
|
Cel *cel;
|
||||||
|
|
||||||
for (i=0; i<32; i++) {
|
for (i=0; i<32; i++) {
|
||||||
/* make the image */
|
/* make the image */
|
||||||
@ -79,30 +80,31 @@ void test ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* add the new image in the stock */
|
/* add the new image in the stock */
|
||||||
image_index = stock_add_image (layer->stock, image);
|
image_index = stock_add_image(sprite->stock, image);
|
||||||
|
|
||||||
/* image property */
|
/* cel properties */
|
||||||
layer_add_frame (layer,
|
cel = cel_new(i, image_index);
|
||||||
frame_new (i, /* frpos */
|
cel_set_position(cel,
|
||||||
image_index, /* image */
|
cos(AL_PI*i/16)*64,
|
||||||
cos(AL_PI*i/16)*64, /* x */
|
sin(AL_PI*i/16)*64);
|
||||||
sin(AL_PI*i/16)*64, /* y */
|
cel_set_opacity(cel, 128+sin(AL_PI*i/32)*127);
|
||||||
128+sin(AL_PI*i/32)*127)); /* opacity */
|
|
||||||
|
layer_add_cel(layer, cel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
image_copy (image_screen, image_bg, 0, 0);
|
image_copy(image_screen, image_bg, 0, 0);
|
||||||
sprite_render (sprite, image_screen,
|
sprite_render(sprite, image_screen,
|
||||||
mouse_x-sprite->w/2, mouse_y-sprite->h/2);
|
mouse_x-sprite->w/2, mouse_y-sprite->h/2);
|
||||||
image_to_allegro (image_screen, bmp, 0, 0);
|
image_to_allegro(image_screen, bmp, 0, 0);
|
||||||
|
|
||||||
if (key[KEY_LEFT]) sprite->frpos--;
|
if (key[KEY_LEFT]) sprite->frame--;
|
||||||
if (key[KEY_RIGHT]) sprite->frpos++;
|
if (key[KEY_RIGHT]) sprite->frame++;
|
||||||
|
|
||||||
text_mode(makecol (0, 0, 0));
|
text_mode(makecol (0, 0, 0));
|
||||||
textprintf(bmp, font, 0, 0, makecol (255, 255, 255), "%d", sprite->frpos);
|
textprintf(bmp, font, 0, 0, makecol(255, 255, 255), "%d", sprite->frame);
|
||||||
blit(bmp, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
|
blit(bmp, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
|
||||||
} while (!key[KEY_ESC]);
|
} while (!key[KEY_ESC]);
|
||||||
|
|
||||||
@ -114,16 +116,16 @@ void test ()
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
allegro_init ();
|
allegro_init();
|
||||||
set_color_depth (16);
|
set_color_depth(16);
|
||||||
set_gfx_mode (GFX_AUTODETECT, 320, 200, 0, 0);
|
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 320, 200, 0, 0);
|
||||||
install_timer ();
|
install_timer();
|
||||||
install_keyboard ();
|
install_keyboard();
|
||||||
install_mouse ();
|
install_mouse();
|
||||||
|
|
||||||
set_palette (default_palette);
|
set_palette(default_palette);
|
||||||
|
|
||||||
test ();
|
test();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user