From ddc93e298c763be426fc54afe3092d8be4fd7135 Mon Sep 17 00:00:00 2001 From: luke zeller Date: Thu, 23 Apr 2020 13:01:42 -0400 Subject: [PATCH] character write working --- program | Bin 23280 -> 29496 bytes program.cpp | 204 +++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 196 insertions(+), 8 deletions(-) diff --git a/program b/program index 2526559df851108c9d255bc879379832795907d7..5b649bf181891489e076e91116942baaa9c92855 100755 GIT binary patch literal 29496 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 literal 23280 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 JQ?Rkxe*+}f_xAt* diff --git a/program.cpp b/program.cpp index 7c2b8c1..2e8200a 100644 --- a/program.cpp +++ b/program.cpp @@ -3,6 +3,62 @@ #include +int charA[8][8] = { + {0,0,0,0,0,0,0,0}, + {0,1,1,1,1,1,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,1,1,1,1,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,0,0,0,1,0,0}, + {0,0,0,0,0,0,0,0}, +}; + +int charB[8][8] = { + {0,0,0,0,0,0,0,0}, + {0,1,1,1,1,0,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,1,1,1,0,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,1,1,1,0,0,0}, + {0,0,0,0,0,0,0,0}, +}; + +int charC[8][8] = { + {0,0,0,0,0,0,0,0}, + {0,0,1,1,1,1,0,0}, + {0,1,0,0,0,0,0,0}, + {0,1,0,0,0,0,0,0}, + {0,1,0,0,0,0,0,0}, + {0,1,0,0,0,0,0,0}, + {0,0,1,1,1,1,0,0}, + {0,0,0,0,0,0,0,0}, +}; + +int charD[8][8] = { + {0,0,0,0,0,0,0,0}, + {0,1,1,1,1,0,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,0,0,0,1,0,0}, + {0,1,1,1,1,0,0,0}, + {0,0,0,0,0,0,0,0}, +}; + +int charE[8][8] = { + {0,0,0,0,0,0,0,0}, + {0,1,1,1,1,1,0,0}, + {0,1,0,0,0,0,0,0}, + {0,1,1,1,1,0,0,0}, + {0,1,0,0,0,0,0,0}, + {0,1,0,0,0,0,0,0}, + {0,1,1,1,1,1,0,0}, + {0,0,0,0,0,0,0,0}, +}; + + /* Surface to store current scribbles */ static cairo_surface_t *surface = NULL; @@ -21,8 +77,8 @@ static void clear_surface(void) /* Create a new surface of the appropriate size to store our scribbles */ static gboolean configure_event_cb(GtkWidget *widget, - GdkEventConfigure *event, - gpointer data) + GdkEventConfigure *event, + gpointer data) { if(surface) { @@ -70,7 +126,7 @@ draw_pixel(GtkWidget *widget, cairo_set_source_rgb(cr, 1, 1, 1); - cairo_rectangle(cr, x, y, size, size); + cairo_rectangle(cr, x * size, y * size, size, size); cairo_fill(cr); cairo_destroy(cr); @@ -79,7 +135,24 @@ draw_pixel(GtkWidget *widget, gtk_widget_queue_draw_area(widget, x, y, size, size); } - +static void +draw_char(GtkWidget *drawing_area, int zoom, int x, int y, int chara[8][8]) +{ + for(int i=0;i<8;i++){ + for(int j=0;j<8;j++){ + int realX = j + (x * 8); + int realY = i + (y * 8); + switch (chara[i][j]) { + case 1: draw_pixel(drawing_area, realX, realY, zoom); + break; + case 0: break; + default: std::cout << "nonstandard num in array" << std::endl; + } + + }//end of j + + }//end of i +} static void close_window(void) @@ -88,6 +161,39 @@ close_window(void) cairo_surface_destroy(surface); } +static void +zoom1(GtkWidget *drawing_area) +{ + int zoom = 1; + gtk_widget_set_size_request(drawing_area, 320 * zoom, 200 * zoom); + gtk_widget_queue_resize(drawing_area); +} + +static void +zoom2(GtkWidget *drawing_area) +{ + int zoom = 2; + gtk_widget_set_size_request(drawing_area, 320 * zoom, 200 * zoom); + gtk_widget_queue_resize(drawing_area); +} + +static void +zoom3(GtkWidget *drawing_area) +{ + int zoom = 3; + gtk_widget_set_size_request(drawing_area, 320 * zoom, 200 * zoom); + gtk_widget_queue_resize(drawing_area); +} + +static void +zoom4(GtkWidget *drawing_area) +{ + int zoom = 4; + gtk_widget_set_size_request(drawing_area, 320 * zoom, 200 * zoom); + gtk_widget_queue_resize(drawing_area); + +} + static void @@ -104,6 +210,14 @@ activate(GtkApplication *app, GtkWidget *fileMenu; GtkWidget *fileMi; GtkWidget *quitMi; + GtkWidget *viewMenu; + GtkWidget *viewMi; + GtkWidget *zoomMi; + GtkWidget *zoomMenu; + GtkWidget *zoom1Mi; + GtkWidget *zoom2Mi; + GtkWidget *zoom3Mi; + GtkWidget *zoom4Mi; int zoom = 2; @@ -112,7 +226,7 @@ activate(GtkApplication *app, gtk_window_set_title(GTK_WINDOW(window), "z80 screen test"); gtk_window_set_resizable(GTK_WINDOW(window), FALSE); - g_signal_connect(window, "destroy", G_CALLBACK(close_window), NULL); + g_signal_connect(window, "destroy", G_CALLBACK(close_window), NULL); gtk_container_set_border_width(GTK_CONTAINER(window), 0); @@ -123,17 +237,40 @@ activate(GtkApplication *app, menubar = gtk_menu_bar_new(); fileMenu = gtk_menu_new(); + viewMenu = gtk_menu_new(); + zoomMenu = gtk_menu_new(); fileMi = gtk_menu_item_new_with_label("File"); quitMi = gtk_menu_item_new_with_label("Quit"); + viewMi = gtk_menu_item_new_with_label("View"); + zoomMi = gtk_menu_item_new_with_label("Zoom"); + + zoom1Mi = gtk_menu_item_new_with_label("100%"); + zoom2Mi = gtk_menu_item_new_with_label("200%"); + zoom3Mi = gtk_menu_item_new_with_label("300%"); + zoom4Mi = gtk_menu_item_new_with_label("400%"); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileMi), fileMenu); gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), quitMi); gtk_menu_shell_append(GTK_MENU_SHELL(menubar), fileMi); + + gtk_menu_item_set_submenu(GTK_MENU_ITEM(viewMi), viewMenu); + gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu), zoomMi); + gtk_menu_shell_append(GTK_MENU_SHELL(menubar), viewMi); + + gtk_menu_item_set_submenu(GTK_MENU_ITEM(zoomMi), zoomMenu); + gtk_menu_shell_append(GTK_MENU_SHELL(zoomMenu), zoom1Mi); + gtk_menu_shell_append(GTK_MENU_SHELL(zoomMenu), zoom2Mi); + gtk_menu_shell_append(GTK_MENU_SHELL(zoomMenu), zoom3Mi); + gtk_menu_shell_append(GTK_MENU_SHELL(zoomMenu), zoom4Mi); + gtk_box_pack_start(GTK_BOX(box), menubar, FALSE, FALSE, 0); - g_signal_connect(G_OBJECT(quitMi), "activate", - G_CALLBACK(gtk_widget_destroy(window)), NULL); + g_signal_connect_swapped (quitMi, "activate", + G_CALLBACK (gtk_widget_destroy), + window); + drawing_area = gtk_drawing_area_new(); @@ -149,14 +286,65 @@ activate(GtkApplication *app, G_CALLBACK(configure_event_cb), NULL); + + g_signal_connect_swapped (zoom1Mi, "activate", + G_CALLBACK (zoom1), + drawing_area); + g_signal_connect_swapped (zoom2Mi, "activate", + G_CALLBACK (zoom2), + drawing_area); + g_signal_connect_swapped (zoom3Mi, "activate", + G_CALLBACK (zoom3), + drawing_area); + g_signal_connect_swapped (zoom4Mi, "activate", + G_CALLBACK (zoom4), + drawing_area); + + gtk_widget_show_all(window); +/* + draw_char(drawing_area, zoom, 0, 0,charA); + draw_char(drawing_area, zoom, 1, 0,charB); + draw_char(drawing_area, zoom, 2, 0,charC); + draw_char(drawing_area, zoom, 3, 0,charD); + draw_char(drawing_area, zoom, 4, 0,charE); +*/ + + for(int i=0;i<25;i++){ + for(int j=0;j<40;j++){ + + int randNum = (rand() % 5); + + switch(randNum) { + case 0: draw_char(drawing_area, zoom, j, i,charA); break; + case 1: draw_char(drawing_area, zoom, j, i,charB); break; + case 2: draw_char(drawing_area, zoom, j, i,charC); break; + case 3: draw_char(drawing_area, zoom, j, i,charD); break; + case 4: draw_char(drawing_area, zoom, j, i,charE); break; + default: std::cout << "invalid num in rand" << std::endl; break; + } + + //draw_char(drawing_area, zoom, j, i,charA); + + + }//end of j + + }//end of i + + + /* +std::cout << "got here" << std::endl; + zoom = 4; + gtk_widget_set_size_request(drawing_area, 320 * zoom, 200 * zoom); + gtk_widget_queue_resize(drawing_area); draw_pixel(drawing_area, 0, 0, zoom); - + */ } + int main(int argc, char **argv)