int main(int argc, char *argv[]) { struct flower flower; struct display *d; struct timeval tv; d = display_create(&argc, argv); if (d == NULL) { fprintf(stderr, "failed to create display: %m\n"); return -1; } gettimeofday(&tv, NULL); srandom(tv.tv_usec); flower.width = 200; flower.height = 200; flower.display = d; flower.window = window_create(d); flower.widget = window_add_widget(flower.window, &flower); window_set_title(flower.window, "Flower"); widget_set_resize_handler(flower.widget, resize_handler); widget_set_redraw_handler(flower.widget, redraw_handler); widget_set_button_handler(flower.widget, button_handler); widget_set_default_cursor(flower.widget, CURSOR_HAND1); widget_set_touch_down_handler(flower.widget, touch_down_handler); window_schedule_resize(flower.window, flower.width, flower.height); display_run(d); return 0; }
static void keyboard_create(struct output *output, struct virtual_keyboard *virtual_keyboard) { struct keyboard *keyboard; const struct layout *layout; struct wl_input_panel_surface *ips; layout = get_current_layout(virtual_keyboard); keyboard = xzalloc(sizeof *keyboard); keyboard->keyboard = virtual_keyboard; keyboard->window = window_create_custom(virtual_keyboard->display); keyboard->widget = window_add_widget(keyboard->window, keyboard); virtual_keyboard->keyboard = keyboard; window_set_title(keyboard->window, "Virtual keyboard"); window_set_user_data(keyboard->window, keyboard); widget_set_redraw_handler(keyboard->widget, redraw_handler); widget_set_resize_handler(keyboard->widget, resize_handler); widget_set_button_handler(keyboard->widget, button_handler); window_schedule_resize(keyboard->window, layout->columns * key_width, layout->rows * key_height); ips = wl_input_panel_get_input_panel_surface(virtual_keyboard->input_panel, window_get_wl_surface(keyboard->window)); wl_input_panel_surface_set_toplevel(ips, output_get_wl_output(output), WL_INPUT_PANEL_SURFACE_POSITION_CENTER_BOTTOM); }
static void keyboard_create(struct output *output, struct virtual_keyboard *virtual_keyboard) { struct keyboard *keyboard; keyboard = malloc(sizeof *keyboard); memset(keyboard, 0, sizeof *keyboard); keyboard->keyboard = virtual_keyboard; keyboard->window = window_create_custom(virtual_keyboard->display); keyboard->widget = window_add_widget(keyboard->window, keyboard); window_set_title(keyboard->window, "Virtual keyboard"); window_set_user_data(keyboard->window, keyboard); widget_set_redraw_handler(keyboard->widget, redraw_handler); widget_set_resize_handler(keyboard->widget, resize_handler); widget_set_button_handler(keyboard->widget, button_handler); window_schedule_resize(keyboard->window, columns * key_width, rows * key_height); input_panel_set_surface(virtual_keyboard->input_panel, window_get_wl_surface(keyboard->window), output_get_wl_output(output)); }
int main(int argc, char *argv[]) { struct timespec ts; struct smoke smoke; struct display *d; int size; d = display_create(&argc, argv); if (d == NULL) { fprintf(stderr, "failed to create display: %m\n"); return -1; } smoke.width = 200; smoke.height = 200; smoke.display = d; smoke.window = window_create(d); smoke.widget = window_add_widget(smoke.window, &smoke); window_set_title(smoke.window, "smoke"); window_set_buffer_type(smoke.window, WINDOW_BUFFER_TYPE_SHM); clock_gettime(CLOCK_MONOTONIC, &ts); srandom(ts.tv_nsec); smoke.current = 0; size = smoke.height * smoke.width; smoke.b[0].d = calloc(size, sizeof(float)); smoke.b[0].u = calloc(size, sizeof(float)); smoke.b[0].v = calloc(size, sizeof(float)); smoke.b[1].d = calloc(size, sizeof(float)); smoke.b[1].u = calloc(size, sizeof(float)); smoke.b[1].v = calloc(size, sizeof(float)); widget_set_motion_handler(smoke.widget, mouse_motion_handler); widget_set_touch_motion_handler(smoke.widget, touch_motion_handler); widget_set_resize_handler(smoke.widget, resize_handler); widget_set_redraw_handler(smoke.widget, redraw_handler); window_set_user_data(smoke.window, &smoke); widget_schedule_resize(smoke.widget, smoke.width, smoke.height); display_run(d); widget_destroy(smoke.widget); window_destroy(smoke.window); display_destroy(d); return 0; }
static struct ModeInfo * create_wscreensaver_instance(struct wscreensaver *screensaver, struct wl_output *output, int width, int height) { static int instance; struct ModeInfo *mi; struct rectangle drawarea; mi = calloc(1, sizeof *mi); if (!mi) return NULL; if (demo_mode) mi->window = window_create(screensaver->display); else mi->window = window_create_custom(screensaver->display); if (!mi->window) { fprintf(stderr, "%s: creating a window failed.\n", progname); free(mi); return NULL; } window_set_title(mi->window, progname); if (screensaver->interface && !demo_mode) { mi->widget = window_add_widget(mi->window, mi); screensaver_set_surface(screensaver->interface, window_get_wl_surface(mi->window), output); } else { mi->widget = frame_create(mi->window, mi); } widget_set_redraw_handler(mi->widget, redraw_handler); mi->priv = screensaver; mi->eglctx = EGL_NO_CONTEXT; mi->instance_number = instance++; /* XXX */ widget_get_allocation(mi->widget, &drawarea); mi->width = drawarea.width; mi->height = drawarea.height; screensaver->plugin->init(mi); window_schedule_resize(mi->window, width, height); return mi; }
static struct calibrator * calibrator_create(struct display *display) { struct calibrator *calibrator; calibrator = malloc(sizeof *calibrator); if (calibrator == NULL) return NULL; calibrator->window = window_create(display); calibrator->widget = window_add_widget(calibrator->window, calibrator); window_set_title(calibrator->window, "Wayland calibrator"); calibrator->display = display; calibrator->current_test = ARRAY_LENGTH(test_ratios) - 1; widget_set_button_handler(calibrator->widget, button_handler); widget_set_redraw_handler(calibrator->widget, redraw_handler); window_set_fullscreen(calibrator->window, 1); return calibrator; }
/** * \brief Create and initialise a new eventdemo window. * The returned eventdemo instance should be destroyed using \c eventdemo_destroy(). * \param d associated display */ static struct eventdemo * eventdemo_create(struct display *d) { struct eventdemo *e; e = zalloc(sizeof (struct eventdemo)); if (e == NULL) return NULL; e->window = window_create(d); if (noborder) { /* Demonstrate how to create a borderless window. * Move windows with META + left mouse button. */ e->widget = window_add_widget(e->window, e); } else { e->widget = window_frame_create(e->window, e); window_set_title(e->window, title); } e->display = d; /* The eventdemo window draws a red rectangle as a demonstration * of per-window data. The dimensions of that rectangle are set * here. */ e->x = width * 1.0 / 4.0; e->w = width * 2.0 / 4.0; e->y = height * 1.0 / 4.0; e->h = height * 2.0 / 4.0; /* Connect the user data to the window */ window_set_user_data(e->window, e); /* Set the callback redraw handler for the window */ widget_set_redraw_handler(e->widget, redraw_handler); /* Set the callback resize handler for the window */ widget_set_resize_handler(e->widget, resize_handler); /* Set the callback focus handler for the window */ window_set_keyboard_focus_handler(e->window, keyboard_focus_handler); /* Set the callback key handler for the window */ window_set_key_handler(e->window, key_handler); /* Set the callback button handler for the window */ widget_set_button_handler(e->widget, button_handler); /* Set the callback motion handler for the window */ widget_set_motion_handler(e->widget, motion_handler); /* Set the callback pointer frame handler for the window */ widget_set_pointer_frame_handler(e->widget, pointer_frame_handler); /* Set the callback axis handler for the window */ widget_set_axis_handlers(e->widget, axis_handler, axis_source_handler, axis_stop_handler, axis_discrete_handler); /* Initial drawing of the window */ window_schedule_resize(e->window, width, height); return e; }
int main(int argc, char *argv[]) { struct transformed transformed; struct display *d; int i; transformed.width = 500; transformed.height = 250; transformed.fullscreen = 0; transformed.fullscreen_method = WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-d") == 0) { transformed.fullscreen_method = WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER; } else if (strcmp(argv[i], "-w") == 0) { if (++i >= argc) usage(EXIT_FAILURE); transformed.width = atol(argv[i]); } else if (strcmp(argv[i], "-h") == 0) { if (++i >= argc) usage(EXIT_FAILURE); transformed.height = atol(argv[i]); } else if (strcmp(argv[i], "--help") == 0) usage(EXIT_SUCCESS); else usage(EXIT_FAILURE); } d = display_create(&argc, argv); if (d == NULL) { fprintf(stderr, "failed to create display: %m\n"); return -1; } transformed.display = d; transformed.window = window_create(d); transformed.widget = window_add_widget(transformed.window, &transformed); window_set_title(transformed.window, "Transformed"); window_set_fullscreen_method(transformed.window, transformed.fullscreen_method); widget_set_transparent(transformed.widget, 0); widget_set_default_cursor(transformed.widget, CURSOR_BLANK); widget_set_resize_handler(transformed.widget, resize_handler); widget_set_redraw_handler(transformed.widget, redraw_handler); widget_set_button_handler(transformed.widget, button_handler); widget_set_touch_down_handler(transformed.widget, touch_handler); window_set_key_handler(transformed.window, key_handler); window_set_fullscreen_handler(transformed.window, fullscreen_handler); window_set_output_handler(transformed.window, output_handler); window_set_user_data(transformed.window, &transformed); window_schedule_resize(transformed.window, transformed.width, transformed.height); display_run(d); return 0; }
int main(int argc, char *argv[]) { struct fullscreen fullscreen; struct display *d; int i; fullscreen.width = 640; fullscreen.height = 480; fullscreen.fullscreen = 0; fullscreen.present_method = _WL_FULLSCREEN_SHELL_PRESENT_METHOD_DEFAULT; wl_list_init(&fullscreen.output_list); fullscreen.current_output = NULL; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-w") == 0) { if (++i >= argc) usage(EXIT_FAILURE); fullscreen.width = atol(argv[i]); } else if (strcmp(argv[i], "-h") == 0) { if (++i >= argc) usage(EXIT_FAILURE); fullscreen.height = atol(argv[i]); } else if (strcmp(argv[i], "--help") == 0) usage(EXIT_SUCCESS); else usage(EXIT_FAILURE); } d = display_create(&argc, argv); if (d == NULL) { fprintf(stderr, "failed to create display: %m\n"); return -1; } fullscreen.display = d; fullscreen.fshell = NULL; display_set_user_data(fullscreen.display, &fullscreen); display_set_global_handler(fullscreen.display, global_handler); display_set_output_configure_handler(fullscreen.display, output_handler); if (fullscreen.fshell) { fullscreen.window = window_create_custom(d); _wl_fullscreen_shell_present_surface(fullscreen.fshell, window_get_wl_surface(fullscreen.window), fullscreen.present_method, NULL); /* If we get the CURSOR_PLANE capability, we'll change this */ fullscreen.draw_cursor = 1; } else { fullscreen.window = window_create(d); fullscreen.draw_cursor = 0; } fullscreen.widget = window_add_widget(fullscreen.window, &fullscreen); window_set_title(fullscreen.window, "Fullscreen"); widget_set_transparent(fullscreen.widget, 0); widget_set_default_cursor(fullscreen.widget, CURSOR_LEFT_PTR); widget_set_redraw_handler(fullscreen.widget, redraw_handler); widget_set_button_handler(fullscreen.widget, button_handler); widget_set_motion_handler(fullscreen.widget, motion_handler); widget_set_enter_handler(fullscreen.widget, enter_handler); widget_set_touch_down_handler(fullscreen.widget, touch_handler); window_set_key_handler(fullscreen.window, key_handler); window_set_fullscreen_handler(fullscreen.window, fullscreen_handler); window_set_user_data(fullscreen.window, &fullscreen); /* Hack to set minimum allocation so we can shrink later */ window_schedule_resize(fullscreen.window, 1, 1); window_schedule_resize(fullscreen.window, fullscreen.width, fullscreen.height); display_run(d); return 0; }
int main(int argc, char *argv[]) { struct box box; struct display *d; struct timeval tv; int i; d = display_create(&argc, argv); if (d == NULL) { fprintf(stderr, "failed to create display: %m\n"); return -1; } box.mode = MODE_SRC_DST; for (i = 1; i < argc; i++) { if (strcmp("-s", argv[i]) == 0) box.mode = MODE_SRC_ONLY; else if (strcmp("-d", argv[i]) == 0) box.mode = MODE_DST_ONLY; else if (strcmp("-b", argv[i]) == 0) box.mode = MODE_SRC_DST; else if (strcmp("-n", argv[i]) == 0) box.mode = MODE_NO_VIEWPORT; else { usage(argv[0]); exit(1); } } gettimeofday(&tv, NULL); srandom(tv.tv_usec); box.width = BUFFER_WIDTH / BUFFER_SCALE; box.height = BUFFER_HEIGHT / BUFFER_SCALE; box.display = d; box.window = window_create(d); box.widget = window_add_widget(box.window, &box); window_set_title(box.window, "Scaler Test Box"); window_set_buffer_scale(box.window, BUFFER_SCALE); widget_set_resize_handler(box.widget, resize_handler); widget_set_redraw_handler(box.widget, redraw_handler); widget_set_button_handler(box.widget, button_handler); widget_set_default_cursor(box.widget, CURSOR_HAND1); widget_set_touch_down_handler(box.widget, touch_down_handler); window_schedule_resize(box.window, box.width, box.height); display_set_user_data(box.display, &box); display_set_global_handler(box.display, global_handler); display_run(d); widget_destroy(box.widget); window_destroy(box.window); display_destroy(d); return 0; }