void random_control_point (control_point *cp, int ivar) { int i, nxforms, var; static int xform_distrib[] = { 2, 2, 2, 3, 3, 3, 4, 4, 5 }; static int var_distrib[] = { -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5 }; static int mixed_var_distrib[] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5 }; get_cmap (cmap_random, cp->cmap, 256); cp->time = 0.0; nxforms = random_distrib (xform_distrib); var = (0 > ivar) ? random_distrib(var_distrib) : ivar; for (i = 0; i < nxforms; i++) { int j, k; cp->xform[i].density = 1.0 / nxforms; cp->xform[i].color = i == 0; for (j = 0; j < 3; j++) for (k = 0; k < 2; k++) cp->xform[i].c[j][k] = random_uniform11(); for (j = 0; j < NVARS; j++) cp->xform[i].var[j] = 0.0; if (var >= 0) cp->xform[i].var[var] = 1.0; else cp->xform[i].var[random_distrib(mixed_var_distrib)] = 1.0; } for (; i < NXFORMS; i++) cp->xform[i].density = 0.0; }
GdkPixbuf* _lightdash_gdk_pixbuf_get_from_pixmap (GdkPixbuf *dest, Pixmap xpixmap, int src_x, int src_y, int dest_x, int dest_y, int width, int height) { GdkDrawable *drawable; GdkPixbuf *retval; GdkColormap *cmap; retval = NULL; cmap = NULL; drawable = gdk_xid_table_lookup (xpixmap); if (drawable) g_object_ref (G_OBJECT (drawable)); else drawable = gdk_pixmap_foreign_new (xpixmap); if (drawable) { cmap = get_cmap (drawable); /* GDK is supposed to do this but doesn't in GTK 2.0.2, * fixed in 2.0.3 */ if (width < 0) gdk_drawable_get_size (drawable, &width, NULL); if (height < 0) gdk_drawable_get_size (drawable, NULL, &height); retval = gdk_pixbuf_get_from_drawable (dest, drawable, cmap, src_x, src_y, dest_x, dest_y, width, height); } if (cmap) g_object_unref (G_OBJECT (cmap)); if (drawable) g_object_unref (G_OBJECT (drawable)); return retval; }
GdkPixbuf* meta_gdk_pixbuf_get_from_pixmap (GdkPixbuf *dest, Pixmap xpixmap, int src_x, int src_y, int dest_x, int dest_y, int width, int height) { GdkDrawable *drawable; GdkPixbuf *retval; #if !GTK_CHECK_VERSION (3, 0, 0) GdkColormap *cmap; #endif retval = NULL; #if !GTK_CHECK_VERSION (3, 0, 0) cmap = NULL; #endif drawable = gdk_x11_window_lookup_for_display (gdk_display_get_default (), xpixmap); if (drawable) g_object_ref (G_OBJECT (drawable)); else drawable = gdk_pixmap_foreign_new (xpixmap); if (drawable) { cmap = get_cmap (drawable); retval = gdk_pixbuf_get_from_drawable (dest, drawable, cmap, src_x, src_y, dest_x, dest_y, width, height); } #if !GTK_CHECK_VERSION (3, 0, 0) if (cmap) g_object_unref (G_OBJECT (cmap)); #endif if (drawable) g_object_unref (G_OBJECT (drawable)); return retval; }
GdkPixbuf* meta_gdk_pixbuf_get_from_pixmap (GdkPixbuf *dest, Pixmap xpixmap, int src_x, int src_y, int dest_x, int dest_y, int width, int height) { GdkDrawable *drawable; GdkPixbuf *retval; GdkColormap *cmap; retval = NULL; cmap = NULL; drawable = gdk_xid_table_lookup (xpixmap); if (drawable) g_object_ref (G_OBJECT (drawable)); else drawable = gdk_pixmap_foreign_new (xpixmap); if (drawable) { cmap = get_cmap (drawable); retval = gdk_pixbuf_get_from_drawable (dest, drawable, cmap, src_x, src_y, dest_x, dest_y, width, height); } if (cmap) g_object_unref (G_OBJECT (cmap)); if (drawable) g_object_unref (G_OBJECT (drawable)); return retval; }
void parse_control_point (char **ss, control_point *cp) { char *argv[MAXARGS]; int argc, i, j; int set_cm = 0, set_image_size = 0, set_nbatches = 0, set_white_level = 0, set_cmap_inter = 0; int set_spatial_oversample = 0; double *slot = NULL, xf, cm, t, nbatches, white_level, spatial_oversample, cmap_inter; double image_size[2]; for (i = 0; i < NXFORMS; i++) { cp->xform[i].density = 0.0; cp->xform[i].color = (i == 0); cp->xform[i].var[0] = 1.0; for (j = 1; j < NVARS; j++) cp->xform[i].var[j] = 0.0; cp->xform[i].c[0][0] = 1.0; cp->xform[i].c[0][1] = 0.0; cp->xform[i].c[1][0] = 0.0; cp->xform[i].c[1][1] = 1.0; cp->xform[i].c[2][0] = 0.0; cp->xform[i].c[2][1] = 0.0; } for (j = 0; j < 2; j++) { cp->pulse[j][0] = 0.0; cp->pulse[j][1] = 60.0; cp->wiggle[j][0] = 0.0; cp->wiggle[j][1] = 60.0; } tokenize (ss, argv, &argc); for (i = 0; i < argc; i++) { if (streql("xform", argv[i])) slot = &xf; else if (streql("time", argv[i])) slot = &cp->time; else if (streql("brightness", argv[i])) slot = &cp->brightness; else if (streql("contrast", argv[i])) slot = &cp->contrast; else if (streql("gamma", argv[i])) slot = &cp->gamma; else if (streql("zoom", argv[i])) slot = &cp->zoom; else if (streql("image_size", argv[i])) { slot = image_size; set_image_size = 1; } else if (streql("center", argv[i])) slot = cp->center; else if (streql("pulse", argv[i])) slot = (double *) cp->pulse; else if (streql("wiggle", argv[i])) slot = (double *) cp->wiggle; else if (streql("pixels_per_unit", argv[i])) slot = &cp->pixels_per_unit; else if (streql("spatial_filter_radius", argv[i])) slot = &cp->spatial_filter_radius; else if (streql("sample_density", argv[i])) slot = &cp->sample_density; else if (streql("nbatches", argv[i])) { slot = &nbatches; set_nbatches = 1; } else if (streql("white_level", argv[i])) { slot = &white_level; set_white_level = 1; } else if (streql("spatial_oversample", argv[i])) { slot = &spatial_oversample; set_spatial_oversample = 1; } else if (streql("cmap", argv[i])) { slot = &cm; set_cm = 1; } else if (streql("density", argv[i])) slot = &cp->xform[(int)xf].density; else if (streql("color", argv[i])) slot = &cp->xform[(int)xf].color; else if (streql("coefs", argv[i])) { slot = cp->xform[(int)xf].c[0]; cp->xform[(int)xf].density = 1.0; } else if (streql("var", argv[i])) slot = cp->xform[(int)xf].var; else if (streql("cmap_inter", argv[i])) { slot = &cmap_inter; set_cmap_inter = 1; } else *slot++ = g_strtod(argv[i], NULL); } if (set_cm) { cp->cmap_index = (int) cm; get_cmap(cp->cmap_index, cp->cmap, 256); } if (set_image_size) { cp->width = (int) image_size[0]; cp->height = (int) image_size[1]; } if (set_cmap_inter) cp->cmap_inter = (int) cmap_inter; if (set_nbatches) cp->nbatches = (int) nbatches; if (set_spatial_oversample) cp->spatial_oversample = (int) spatial_oversample; if (set_white_level) cp->white_level = (int) white_level; for (i = 0; i < NXFORMS; i++) { t = 0.0; for (j = 0; j < NVARS; j++) t += cp->xform[i].var[j]; t = 1.0 / t; for (j = 0; j < NVARS; j++) cp->xform[i].var[j] *= t; } qsort ((char *) cp->xform, NXFORMS, sizeof(xform), compare_xforms); }
init_sys() { WORD work_in[11]; WORD work_out[57]; WORD i; save_critical(); got_blitter = ( (_xbios(64, -1) & 3 ) == 3); if ( (gl_apid = appl_init()) == -1) { exit(-1); } aline = ainit(); if (!init_mem()) exit(-2); /* save initial rez ... we'll see if GEM agrees with this later */ if ( (irez = Getrez()) != 0) { if (irez != 1) { puts("Cyber Paint can't run on black and white systems, sorry"); for (i=0; i<60; i++) { Vsync(); } exit(-3); } } get_cmap(color_env); copy_words(init_cmap, sys_cmap, COLORS); put_cmap(sys_cmap); initted_color = 1; if (!init_pulls()) return(-4); /* save mouse wrap-around */ mouse_bx = *((WORD *)(aline-692)); mouse_by = *((WORD *)(aline-690)); /* save # of colors gem thinks exist */ gem_colr = *((WORD *)(aline-666)); gr_handle = graf_handle(&gr_hwchar, &gr_hhchar, &gr_hwbox, &gr_hhbox); handle = gr_handle; stuff_words(work_in, 1, 10); work_in[10] = 2; v_opnvwk(work_in, &handle, work_out); if (handle == 0) return(-5); if (work_out[0] == 639) { gem_mrez = 1; /* see what GEM thinks rez is in so file-requestor can work */ /* poke in initial mouse location (in case off-screen for lo-rez */ *((WORD *)(aline-602)) = 160; *((WORD *)(aline-600)) = 100; } jim_rez(); pscreen = cscreen = (WORD *)Physbase(); if ((uscreen = askmem(32000)) == NULL) return(-6); if ((start_screen = askmem(32000)) == NULL) return(-7); if ((end_screen = askmem(32000)) == NULL) return(-8); if ((prev_screen = laskmem(2L*32000L)) == NULL) /* prev/next form 64K buffer */ return(-9); next_screen = prev_screen+16000; if ((bscreen = askmem(32000)) == NULL) return(-11); empty_ram_dlt(); zero_screens(); if (!init_input()) return(-13); init_fname(); init_menu_colors(); install_critical(); jimints_on(); cel_mem_alloc = mem_free; /* "user" memory starts here */ return(1); }
static int vidcvideoioctl(void *v, void *vs, u_long cmd, void *data, int flag, struct lwp *l) { struct vcons_data *vd = v; struct vidcvideo_softc *sc = vd->cookie; struct fb_devconfig *dc = sc->sc_dc; struct vcons_screen *ms = vd->active; int state; switch (cmd) { case WSDISPLAYIO_GTYPE: *(u_int *)data = WSDISPLAY_TYPE_VIDC; return 0; case WSDISPLAYIO_GINFO: if (ms == NULL) return ENODEV; #define wsd_fbip ((struct wsdisplay_fbinfo *)data) wsd_fbip->height = dc->dc_height; wsd_fbip->width = dc->dc_width; wsd_fbip->depth = dc->dc_depth; wsd_fbip->cmsize = CMAP_SIZE; #undef fbt return 0; case WSDISPLAYIO_GETCMAP: return get_cmap(sc, (struct wsdisplay_cmap *)data); case WSDISPLAYIO_PUTCMAP: return set_cmap(sc, (struct wsdisplay_cmap *)data); case WSDISPLAYIO_LINEBYTES: *(u_int *)data = dc->dc_rowbytes; return 0; case WSDISPLAYIO_SVIDEO: state = *(int *)data; dc->dc_blanked = (state == WSDISPLAYIO_VIDEO_OFF); vidcvideo_queue_dc_change(dc, WSDISPLAY_VIDEO_ONOFF); /* done on video blank */ return 0; case WSDISPLAYIO_GVIDEO: *(u_int *)data = dc->dc_blanked ? WSDISPLAYIO_VIDEO_OFF : WSDISPLAYIO_VIDEO_ON; return 0; case WSDISPLAYIO_GCURPOS: *(struct wsdisplay_curpos *)data = dc->dc_cursor.cc_pos; return 0; case WSDISPLAYIO_SCURPOS: set_curpos(sc, (struct wsdisplay_curpos *)data); vidcvideo_queue_dc_change(dc, WSDISPLAY_CURSOR_DOPOS); return 0; case WSDISPLAYIO_GCURMAX: ((struct wsdisplay_curpos *)data)->x = CURSOR_MAX_WIDTH; ((struct wsdisplay_curpos *)data)->y = CURSOR_MAX_HEIGHT; return 0; case WSDISPLAYIO_GCURSOR: return get_cursor(sc, (struct wsdisplay_cursor *)data); case WSDISPLAYIO_SCURSOR: return set_cursor(sc, (struct wsdisplay_cursor *)data); case WSDISPLAYIO_SMODE: state = *(int *)data; if (state == WSDISPLAYIO_MODE_MAPPED) dc->dc_hwscroll_cookie = vidcvideo_hwscroll_reset(); if (state == WSDISPLAYIO_MODE_EMUL) vidcvideo_hwscroll_back(dc->dc_hwscroll_cookie); vidcvideo_progr_scroll(); return 0; } return EPASSTHROUGH; }