struct _game *game_new(const struct game_ops * const *modes, unsigned int num_modes, game_exit_fn_t efn, void *priv) { struct _game *g; assert(num_modes); assert(modes[0] == NULL); g = calloc(1, sizeof(*g)); if ( NULL == g ) goto out; g->g_modes = modes; g->g_num_modes = num_modes; g->g_efn = efn; g->g_common = priv; g->g_render = renderer_new(g); if ( NULL == g->g_render ) goto out_free; con_init(); /* success */ goto out; out_free: free(g); g = NULL; out: return g; }
/** allocate new renderer for a Chain */ NiftyconfRenderer *renderer_chain_new( NiftyconfChain * chain) { if(!chain) NFT_LOG_NULL(NULL); /* dimensions of cairo surface */ LedChain *c = chain_niftyled(chain); int width = (led_chain_get_max_x(c) + 1) * renderer_scale_factor(); int height = (led_chain_get_max_y(c) + 1) * renderer_scale_factor(); return renderer_new(LED_CHAIN_T, chain, &_render_chain, width, height); }
/** allocate new renderer for a Setup */ NiftyconfRenderer *renderer_setup_new() { LedSetup *s = setup_get_current(); if(!s) NFT_LOG_NULL(NULL); /* dimensions of cairo surface */ gint width, height; led_setup_get_dim(s, &width, &height); width *= ui_renderer_scale_factor(); height *= ui_renderer_scale_factor(); return renderer_new(LED_SETUP_T, s, &_render_setup, width, height); }
/** * gtk_source_gutter_insert: * @gutter: a #GtkSourceGutter. * @renderer: a gutter renderer (must inherit from #GtkSourceGutterRenderer). * @position: the renderer position. * * Insert @renderer into the gutter. If @renderer is yet unowned then gutter * claims its ownership. Otherwise just increases renderer's reference count. * @renderer cannot be already inserted to another gutter. * * Returns: %TRUE if operation succeeded. Otherwise %FALSE. * * Since: 3.0 * **/ gboolean gtk_source_gutter_insert (GtkSourceGutter *gutter, GtkSourceGutterRenderer *renderer, gint position) { Renderer* internal_renderer; g_return_val_if_fail (GTK_SOURCE_IS_GUTTER (gutter), FALSE); g_return_val_if_fail (GTK_SOURCE_IS_GUTTER_RENDERER (renderer), FALSE); g_return_val_if_fail (gtk_source_gutter_renderer_get_view (renderer) == NULL, FALSE); g_return_val_if_fail (gtk_source_gutter_renderer_get_window_type (renderer) == GTK_TEXT_WINDOW_PRIVATE, FALSE); internal_renderer = renderer_new (gutter, renderer, position); append_renderer (gutter, internal_renderer); return TRUE; }
renderer *renderer_flat_new(level *lvl, color_map *map) { renderer_funcs *funcs = NULL; chunk_cache *cache = NULL; funcs = calloc(1, sizeof(renderer_funcs)); if (funcs == NULL) return NULL; cache = (chunk_cache*)cache_slab_new(RENDERER_FLAT_CACHE_SIZE); if (cache == NULL) { free(funcs); return NULL; } funcs->dimensions = renderer_flat_dimensions; funcs->draw_row = renderer_flat_draw_row; return renderer_new(lvl, map, funcs, cache); }