forked from Miroirs/x49gp
Compare commits
2 commits
649c806086
...
b5155be28c
Author | SHA1 | Date | |
---|---|---|---|
|
b5155be28c | ||
|
15ed5d18dc |
3 changed files with 84 additions and 120 deletions
|
@ -330,9 +330,8 @@ void x49gp_lcd_update( x49gp_t* x49gp )
|
|||
|
||||
for ( int y = 0; y < ( ( ui->lcd_height - ui->lcd_annunciators_height ) / LCD_PIXEL_SCALE ); y++ )
|
||||
for ( int x = 0; x < ( ui->lcd_width / LCD_PIXEL_SCALE ); x++ )
|
||||
_draw_pixel( ui->lcd_pixmap, LCD_PIXEL_SCALE * x, LCD_PIXEL_SCALE * y + ui->lcd_annunciators_height,
|
||||
LCD_PIXEL_SCALE, LCD_PIXEL_SCALE,
|
||||
&( ui->colors[ UI_COLOR_GRAYSCALE_0 + x49gp_get_pixel_color( lcd, x, y ) ] ) );
|
||||
_draw_pixel( ui->lcd_pixmap, LCD_PIXEL_SCALE * x, LCD_PIXEL_SCALE * y + ui->lcd_annunciators_height, LCD_PIXEL_SCALE,
|
||||
LCD_PIXEL_SCALE, &( ui->colors[ UI_COLOR_GRAYSCALE_0 + x49gp_get_pixel_color( lcd, x, y ) ] ) );
|
||||
}
|
||||
|
||||
GdkRectangle rect;
|
||||
|
|
|
@ -1328,7 +1328,7 @@ static int _text_to_ucs4( const char* text, gunichar** ucs4p )
|
|||
return n;
|
||||
}
|
||||
|
||||
static void x49gp_ui_vtext_path( cairo_t* cr, const char* family, double size, double x, double y, int n, va_list ap )
|
||||
static void x49gp_ui_vtext_path( cairo_t* cr, const char* family, double size, double x, double y, va_list ap )
|
||||
{
|
||||
cairo_text_extents_t extents;
|
||||
cairo_font_weight_t weight;
|
||||
|
@ -1340,7 +1340,6 @@ static void x49gp_ui_vtext_path( cairo_t* cr, const char* family, double size, d
|
|||
int bytes;
|
||||
int len;
|
||||
|
||||
for ( int i = 0; i < n; i++ ) {
|
||||
slant = va_arg( ap, cairo_font_slant_t );
|
||||
weight = va_arg( ap, cairo_font_weight_t );
|
||||
text = va_arg( ap, const char* );
|
||||
|
@ -1351,7 +1350,7 @@ static void x49gp_ui_vtext_path( cairo_t* cr, const char* family, double size, d
|
|||
ucs4 = NULL;
|
||||
len = _text_to_ucs4( text, &ucs4 );
|
||||
if ( len <= 0 )
|
||||
continue;
|
||||
return;
|
||||
|
||||
for ( int j = 0; j < len; j++ ) {
|
||||
if ( g_unichar_type( ucs4[ j ] ) == G_UNICODE_PRIVATE_USE ) {
|
||||
|
@ -1391,11 +1390,10 @@ static void x49gp_ui_vtext_path( cairo_t* cr, const char* family, double size, d
|
|||
}
|
||||
|
||||
free( ucs4 );
|
||||
}
|
||||
}
|
||||
|
||||
static void x49gp_ui_text_size( cairo_t* cr, const char* family, double size, double* x_bearing, double* y_bearing, double* width,
|
||||
double* height, double* ascent, double* descent, int n, ... )
|
||||
double* height, double* ascent, double* descent, ... )
|
||||
{
|
||||
va_list ap0, ap1;
|
||||
cairo_font_extents_t font_extents;
|
||||
|
@ -1404,13 +1402,10 @@ static void x49gp_ui_text_size( cairo_t* cr, const char* family, double size, do
|
|||
double x1, y1, x2, y2, a, d;
|
||||
const char* text;
|
||||
|
||||
if ( n < 1 )
|
||||
return;
|
||||
|
||||
va_start( ap0, n );
|
||||
va_start( ap0, descent );
|
||||
va_copy( ap1, ap0 );
|
||||
|
||||
x49gp_ui_vtext_path( cr, family, size, 0.0, 0.0, n, ap0 );
|
||||
x49gp_ui_vtext_path( cr, family, size, 0.0, 0.0, ap0 );
|
||||
|
||||
va_end( ap0 );
|
||||
|
||||
|
@ -1422,7 +1417,6 @@ static void x49gp_ui_text_size( cairo_t* cr, const char* family, double size, do
|
|||
a = 0.0;
|
||||
d = 0.0;
|
||||
|
||||
for ( int i = 0; i < n; i++ ) {
|
||||
slant = va_arg( ap1, cairo_font_slant_t );
|
||||
weight = va_arg( ap1, cairo_font_weight_t );
|
||||
text = va_arg( ap1, const char* );
|
||||
|
@ -1441,7 +1435,6 @@ static void x49gp_ui_text_size( cairo_t* cr, const char* family, double size, do
|
|||
a = font_extents.ascent - font_extents.descent;
|
||||
if ( font_extents.descent > -d )
|
||||
d = -font_extents.descent;
|
||||
}
|
||||
|
||||
*x_bearing = x1;
|
||||
*y_bearing = y2;
|
||||
|
@ -1454,20 +1447,17 @@ static void x49gp_ui_text_size( cairo_t* cr, const char* family, double size, do
|
|||
}
|
||||
|
||||
static void x49gp_ui_draw_text( cairo_t* cr, GdkColor* color, const char* family, double size, double line_width, int xoffset, int yoffset,
|
||||
int n, ... )
|
||||
... )
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if ( n < 1 )
|
||||
return;
|
||||
|
||||
va_start( ap, n );
|
||||
va_start( ap, yoffset );
|
||||
|
||||
cairo_set_line_width( cr, line_width );
|
||||
cairo_set_source_rgb( cr, ( ( double )color->red ) / 65535.0, ( ( double )color->green ) / 65535.0,
|
||||
( ( double )color->blue ) / 65535.0 );
|
||||
|
||||
x49gp_ui_vtext_path( cr, family, size, xoffset, yoffset, n, ap );
|
||||
x49gp_ui_vtext_path( cr, family, size, xoffset, yoffset, ap );
|
||||
|
||||
if ( line_width == 0.0 )
|
||||
cairo_fill( cr );
|
||||
|
@ -2409,7 +2399,7 @@ static void x49gp_button_realize( GtkWidget* widget, gpointer user_data )
|
|||
cairo_fill( cr );
|
||||
|
||||
if ( key->letter ) {
|
||||
x49gp_ui_text_size( cr, opt.font, key->letter_size, &xoff, &yoff, &width, &height, &ascent, &descent, 1, CAIRO_FONT_SLANT_NORMAL,
|
||||
x49gp_ui_text_size( cr, opt.font, key->letter_size, &xoff, &yoff, &width, &height, &ascent, &descent, CAIRO_FONT_SLANT_NORMAL,
|
||||
key->font_weight, key->letter );
|
||||
|
||||
switch ( key->layout ) {
|
||||
|
@ -2430,17 +2420,17 @@ static void x49gp_button_realize( GtkWidget* widget, gpointer user_data )
|
|||
break;
|
||||
}
|
||||
|
||||
x49gp_ui_draw_text( cr, &ui->colors[ UI_COLOR_YELLOW ], opt.font, key->letter_size, 0.0, x + xoffset, y + yoffset, 1,
|
||||
x49gp_ui_draw_text( cr, &ui->colors[ UI_COLOR_YELLOW ], opt.font, key->letter_size, 0.0, x + xoffset, y + yoffset,
|
||||
CAIRO_FONT_SLANT_NORMAL, key->font_weight, key->letter );
|
||||
}
|
||||
|
||||
x49gp_ui_text_size( cr, opt.font, key->font_size, &xoff, &yoff, &width, &height, &ascent, &descent, 1, CAIRO_FONT_SLANT_NORMAL,
|
||||
x49gp_ui_text_size( cr, opt.font, key->font_size, &xoff, &yoff, &width, &height, &ascent, &descent, CAIRO_FONT_SLANT_NORMAL,
|
||||
key->font_weight, key->label );
|
||||
|
||||
x = ( int )floor( ( w - 1.0 - width ) / 2.0 - xoff + 0.5 );
|
||||
y = ( int )floor( ( h - 1.0 + ascent ) / 2.0 + 0.5 );
|
||||
|
||||
x49gp_ui_draw_text( cr, >k_widget_get_style( widget )->text[ 0 ], opt.font, key->font_size, 0.0, x + xoffset, y + yoffset, 1,
|
||||
x49gp_ui_draw_text( cr, >k_widget_get_style( widget )->text[ 0 ], opt.font, key->font_size, 0.0, x + xoffset, y + yoffset,
|
||||
CAIRO_FONT_SLANT_NORMAL, key->font_weight, key->label );
|
||||
|
||||
cairo_destroy( cr );
|
||||
|
@ -2495,18 +2485,13 @@ static int x49gp_lcd_configure_event( GtkWidget* widget, GdkEventConfigure* even
|
|||
|
||||
const cairo_format_t cairo_fmt = CAIRO_FORMAT_A1;
|
||||
int stride = cairo_format_stride_for_width( cairo_fmt, 12 );
|
||||
ui->ann_left_surface = cairo_image_surface_create_for_data( ann_left_bits, cairo_fmt, ann_left_width, ann_left_height,
|
||||
stride );
|
||||
ui->ann_right_surface = cairo_image_surface_create_for_data( ann_right_bits, cairo_fmt, ann_right_width, ann_right_height,
|
||||
stride );
|
||||
ui->ann_alpha_surface = cairo_image_surface_create_for_data( ann_alpha_bits, cairo_fmt, ann_alpha_width, ann_alpha_height,
|
||||
stride );
|
||||
ui->ann_battery_surface = cairo_image_surface_create_for_data( ann_battery_bits, cairo_fmt, ann_battery_width, ann_battery_height,
|
||||
stride );
|
||||
ui->ann_busy_surface = cairo_image_surface_create_for_data( ann_busy_bits, cairo_fmt, ann_busy_width, ann_busy_height,
|
||||
stride );
|
||||
ui->ann_io_surface = cairo_image_surface_create_for_data( ann_io_bits, cairo_fmt, ann_io_width, ann_io_height,
|
||||
stride );
|
||||
ui->ann_left_surface = cairo_image_surface_create_for_data( ann_left_bits, cairo_fmt, ann_left_width, ann_left_height, stride );
|
||||
ui->ann_right_surface = cairo_image_surface_create_for_data( ann_right_bits, cairo_fmt, ann_right_width, ann_right_height, stride );
|
||||
ui->ann_alpha_surface = cairo_image_surface_create_for_data( ann_alpha_bits, cairo_fmt, ann_alpha_width, ann_alpha_height, stride );
|
||||
ui->ann_battery_surface =
|
||||
cairo_image_surface_create_for_data( ann_battery_bits, cairo_fmt, ann_battery_width, ann_battery_height, stride );
|
||||
ui->ann_busy_surface = cairo_image_surface_create_for_data( ann_busy_bits, cairo_fmt, ann_busy_width, ann_busy_height, stride );
|
||||
ui->ann_io_surface = cairo_image_surface_create_for_data( ann_io_bits, cairo_fmt, ann_io_width, ann_io_height, stride );
|
||||
|
||||
ui->lcd_pixmap = gdk_pixmap_new( gtk_widget_get_window( ui->lcd_canvas ), ui->lcd_width, ui->lcd_height, -1 );
|
||||
|
||||
|
@ -2569,16 +2554,6 @@ static int x49gp_window_configure_event( GtkWidget* widget, GdkEventConfigure* e
|
|||
switch ( ui->calculator ) {
|
||||
case UI_CALCULATOR_HP49GP:
|
||||
case UI_CALCULATOR_HP49GP_NEWRPL:
|
||||
/* x49gp_ui_draw_text( cr, >k_widget_get_style( widget )->black, opt.font, 15.0, 0.0, 14 /\* 38 *\/, 20 /\* 42 *\/, 2, */
|
||||
/* CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD, "hp", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL, */
|
||||
/* " 49g+" ); */
|
||||
|
||||
/* x49gp_ui_draw_text( cr, >k_widget_get_style( widget )->black, opt.font, 13.0, 0.0, 14 /\* 38 *\/, 34 /\* 56 *\/, 1, */
|
||||
/* CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL, "graphing calculator" ); */
|
||||
|
||||
/* x49gp_ui_draw_symbol( cr, >k_widget_get_style( widget )->black, 10.0, 0.0, true, 114 /\* 138 *\/, 8 /\* 25 *\/, */
|
||||
/* symbol_get_by_name( "triangleup" ) ); */
|
||||
|
||||
left_color = UI_COLOR_GREEN;
|
||||
right_color = UI_COLOR_RED;
|
||||
below_color = UI_COLOR_BLACK;
|
||||
|
@ -2590,16 +2565,6 @@ static int x49gp_window_configure_event( GtkWidget* widget, GdkEventConfigure* e
|
|||
|
||||
case UI_CALCULATOR_HP50G:
|
||||
case UI_CALCULATOR_HP50G_NEWRPL:
|
||||
/* x49gp_ui_draw_text( cr, >k_widget_get_style( widget )->white, opt.font, 15.0, 0.0, 14 /\* 38 *\/, 20 /\* 42 *\/, 2, */
|
||||
/* CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL, "HP", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL, */
|
||||
/* " 50g" ); */
|
||||
|
||||
/* x49gp_ui_draw_text( cr, >k_widget_get_style( widget )->white, opt.font, 13.0, 0.0, 14 /\* 38 *\/, 34 /\* 56 *\/, 1, */
|
||||
/* CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL, "Graphing Calculator" ); */
|
||||
|
||||
/* x49gp_ui_draw_symbol( cr, >k_widget_get_style( widget )->white, 10.0, 0.0, true, 134 /\* 168 *\/, 8 /\* 25 *\/, */
|
||||
/* symbol_get_by_name( "triangleup" ) ); */
|
||||
|
||||
left_color = UI_COLOR_WHITE;
|
||||
right_color = UI_COLOR_ORANGE;
|
||||
below_color = UI_COLOR_BLUE;
|
||||
|
@ -2796,7 +2761,7 @@ static int gui_load( x49gp_module_t* module, GKeyFile* keyfile )
|
|||
ui->lcd_y_offset = ui->lcd_x_offset;
|
||||
|
||||
ui->kb_x_offset = 10;
|
||||
ui->kb_y_offset = ui->lcd_height + ( 2 * ui->lcd_y_offset);
|
||||
ui->kb_y_offset = ui->lcd_height + ( 2 * ui->lcd_y_offset );
|
||||
|
||||
ui->width = ui->lcd_width + ( 2 * ui->lcd_x_offset );
|
||||
ui->height = ui->kb_y_offset + ui_keys[ NB_KEYS - 1 ].y + KB_LINE_HEIGHT;
|
||||
|
@ -2923,8 +2888,8 @@ static int gui_load( x49gp_module_t* module, GKeyFile* keyfile )
|
|||
gtk_event_box_set_above_child( GTK_EVENT_BOX( button->box ), false );
|
||||
gtk_container_add( GTK_CONTAINER( button->box ), button->button );
|
||||
|
||||
x49gp_ui_place_at( x49gp, GTK_FIXED( ui->fixed ), button->box, ui->kb_x_offset + ui_keys[ i ].x, ui->kb_y_offset + ui_keys[ i ].y,
|
||||
ui_keys[ i ].width, ui_keys[ i ].height );
|
||||
x49gp_ui_place_at( x49gp, GTK_FIXED( ui->fixed ), button->box, ui->kb_x_offset + ui_keys[ i ].x,
|
||||
ui->kb_y_offset + ui_keys[ i ].y, ui_keys[ i ].width, ui_keys[ i ].height );
|
||||
|
||||
g_signal_connect( G_OBJECT( button->button ), "button-press-event", G_CALLBACK( x49gp_ui_button_press ), button );
|
||||
g_signal_connect( G_OBJECT( button->button ), "button-release-event", G_CALLBACK( x49gp_ui_button_release ), button );
|
||||
|
|
Loading…
Reference in a new issue