Jump to content

Greyscale bars/Display: Difference between revisions

(Add Seed7 example)
(→‎{{header|C}}: C solve)
Line 81:
NEXT b%
NEXT row%</lang>
 
=={{header|C}}==
Using GTK+2, cairo
<lang c>#include <gtk/gtk.h>
/* do some greyscale plotting */
void gsplot (cairo_t *cr,int x,int y,double s) {
cairo_set_source_rgb (cr,s,s,s);
cairo_rectangle (cr,x,y,1,1);
cairo_fill (cr);
}
/* make a shaded pixbuf */
void expose_event (GtkWidget *widget,GdkEventExpose *event,gpointer data) {
int r,c,x=0;
double f,divs[]={8,16,32,64},adj[]={9,4.2,2.03,1},sh;
cairo_t *cr;
cr = gdk_cairo_create (widget->window);
cairo_scale (cr,5,50);
cairo_set_line_width (cr,0);
for (r=0;r<4;r++) {
c = (r&1)*64-(r%2);
do { /* some dyslexic maths */
f=64.0/divs[r];
sh=(c/(int)(f))*adj[r]/63;
gsplot (cr,x++%64,r,sh);
c+=2*!(r%2)-1;
} while (c != (!(r%2))*64-(r%2));
} cairo_destroy (cr);
return FALSE;
}
/* boilerplate window creation */
int main (int argc, char *argv[]) {
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "expose-event",G_CALLBACK (expose_event), NULL);
g_signal_connect (window, "delete-event", G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_default_size (GTK_WINDOW(window), 320, 200);
gtk_widget_set_app_paintable (window, TRUE);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}</lang>
 
=={{header|C++}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.