Window::Window(const CL_Rect& rect, const std::string& title, CL_Component* parent) : CL_Component(rect, parent), impl(new WindowImpl()) { impl->titlebar = new Titlebar(CL_Rect(CL_Point(3+16,3), CL_Size(get_width()-6-18-18-18, 12+3)), title, this); //Fonts::verdana11.draw(8+15, 3, title); impl->close = new Icon(CL_Rect(CL_Point(3, 3), CL_Size(18,18)), make_sprite(datadir + "/images/window/close.png"), "", this); impl->minimize = new Icon(CL_Rect(CL_Point(get_width()-3-18-18, 3), CL_Size(18,18)), make_sprite(datadir + "/images/window/minimize.png"), "", this); impl->maximize = new Icon(CL_Rect(CL_Point(get_width()-3-18, 3), CL_Size(18,18)), make_sprite(datadir + "/images/window/maximize.png"), "", this); impl->client_area = new CL_Component(CL_Rect(CL_Point(4, 3+12+7), CL_Size(rect.get_width()-10, rect.get_height()-28)), this); impl->parent = this; impl->is_maximized = false; impl->slots.push_back(sig_resize().connect(impl.get(), &WindowImpl::on_resize)); impl->slots.push_back(sig_paint().connect(impl.get(), &WindowImpl::draw)); impl->slots.push_back(impl->maximize->sig_clicked().connect(impl.get(), &WindowImpl::do_maximize)); impl->slots.push_back(impl->close->sig_clicked().connect(impl.get(), &WindowImpl::do_close)); }
void make_player(game_s *game) { actor_s *actor = make_actor(); game_register_actor(game, actor); transform_s *transform = make_transform(game, actor); sprite_s *sprite = make_sprite(game, actor, transform); (void)sprite; }
/* Make an empty sprite structure with the specified file name, width, and * height. It is expected that you will probably already have tried calling * load_sprite() first and it failed, so you want to create the sprite * manually. */ sprite *make_empty_sprite(nbstate *state, unsigned char *fname, int width, int height) { sprite *s; GR_DRAW_ID a; GR_DRAW_ID p; /* Allocate the alpha channel and pixmap with the specified * dimensions (which must be valid): */ if(!(a = GrNewPixmap(width, height, 0))) return 0; if(!(p = GrNewPixmap(width, height, 0))) { GrDestroyWindow(a); return 0; } /* Make the sprite itself and return it to the caller: */ if(!(s = make_sprite(state, fname, width, height, p, a))) { GrDestroyWindow(a); GrDestroyWindow(p); return 0; } else return s; }
/* Create a new sprite from the specified image file. Returns the address of * the new sprite on success or 0 on failure. If width is -1, the real * dimensions of the image file will be used, otherwise the image will be * scaled up or down to the specified dimensions. */ sprite *load_sprite(nbstate *state, unsigned char *fname, int width, int height) { sprite *s; GR_DRAW_ID a; GR_DRAW_ID p; GR_IMAGE_ID img; GR_IMAGE_INFO ii; /* Make sure the file name has been specified: */ if (! fname) return 0; /* Try to find a sprite in the list with the specified filename and * dimensions (any dimensions are OK if width is -1). If one is found, * increment its usage count and return its address. */ for(s = state->spritelist; s; s = s->next) { if ((width == -1 || (width == s->w && height == s->h)) && s->fname && !strcmp(fname, s->fname)) { s->usage++; return s; } } #ifdef HAVE_FILEIO { /* Make the full path to the filename because the Nano-X server * probably isn't running from the game data directory: */ char buf[256]; if (snprintf(buf, 256, "%s/%s", state->gamedir, fname) >= 256){ debug_printf ("Warning: image path \"%s/%s\" is too long\n", state->gamedir, fname); return 0; } /* Try to load the image file, and return 0 on failure: */ img = GrLoadImageFromFile (buf, 0); } #else if (strcmp (fname, (unsigned char*) "nbb1.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb1_data, sizeof( nbb1_data), 0); else if (strcmp (fname, (unsigned char*) "nbb2.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb2_data, sizeof( nbb2_data), 0); else if (strcmp (fname, (unsigned char*) "nbb3.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb3_data, sizeof( nbb3_data), 0); else if (strcmp (fname, (unsigned char*) "nbb4.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb4_data, sizeof( nbb4_data), 0); else if (strcmp (fname, (unsigned char*) "nbb5.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb5_data, sizeof( nbb5_data), 0); else if (strcmp (fname, (unsigned char*) "nbb6.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb6_data, sizeof( nbb6_data), 0); else if (strcmp (fname, (unsigned char*) "nbb7.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb7_data, sizeof( nbb7_data), 0); else if (strcmp (fname, (unsigned char*) "nbb8.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb8_data, sizeof( nbb8_data), 0); else if (strcmp (fname, (unsigned char*) "nbb9.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbb9_data, sizeof( nbb9_data), 0); else if (strcmp (fname, (unsigned char*)"nbball1.gif") == 0) img = GrLoadImageFromBuffer ((char*)nbball1_data, sizeof(nbball1_data), 0); else if (strcmp (fname, (unsigned char*) "nbbat1.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbat1_data, sizeof( nbbat1_data), 0); else if (strcmp (fname, (unsigned char*) "nbbat2.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbat2_data, sizeof( nbbat2_data), 0); else if (strcmp (fname, (unsigned char*) "nbbat3.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbat3_data, sizeof( nbbat3_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg10.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg10_data, sizeof( nbbg10_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg1.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg1_data, sizeof( nbbg1_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg2.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg2_data, sizeof( nbbg2_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg3.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg3_data, sizeof( nbbg3_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg4.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg4_data, sizeof( nbbg4_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg5.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg5_data, sizeof( nbbg5_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg6.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg6_data, sizeof( nbbg6_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg7.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg7_data, sizeof( nbbg7_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg8.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg8_data, sizeof( nbbg8_data), 0); else if (strcmp (fname, (unsigned char*) "nbbg9.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbbg9_data, sizeof( nbbg9_data), 0); else if (strcmp (fname, (unsigned char*) "nbpf.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbpf_data, sizeof( nbpf_data), 0); else if (strcmp (fname, (unsigned char*) "nbpn.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbpn_data, sizeof( nbpn_data), 0); else if (strcmp (fname, (unsigned char*) "nbpp.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbpp_data, sizeof( nbpp_data), 0); else if (strcmp (fname, (unsigned char*) "nbps.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbps_data, sizeof( nbps_data), 0); else if (strcmp (fname, (unsigned char*) "nbpt.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbpt_data, sizeof( nbpt_data), 0); else if (strcmp (fname, (unsigned char*) "nbpw.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbpw_data, sizeof( nbpw_data), 0); else if (strcmp (fname, (unsigned char*) "nbsp1.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbsp1_data, sizeof( nbsp1_data), 0); else if (strcmp (fname, (unsigned char*) "nbsp2.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbsp2_data, sizeof( nbsp2_data), 0); else if (strcmp (fname, (unsigned char*) "nbsp3.gif") == 0) img = GrLoadImageFromBuffer ((char*) nbsp3_data, sizeof( nbsp3_data), 0); else { debug_printf ("No such image: \"%s\"\n", fname); uos_halt (0); return 0; } #endif if (! img) { debug_printf ("Warning: failed to load image \"%s\"- make " "sure it is where the server can find it and " "that support for loading the relevant image " "type has been built into the server\n", fname); return 0; } /* If a size wasn't specified, get the real image size from the server * instead: */ if(width == -1 || height == -1) { GrGetImageInfo(img, &ii); width = ii.width; height = ii.height; } /* Make the alpha channel and pixmap to store the image in: */ if(!(a = GrNewPixmap(width, height, 0))) { GrFreeImage(img); return 0; } if(!(p = GrNewPixmap(width, height, 0))) { GrFreeImage(img); GrDestroyWindow(a); return 0; } /* Draw the image into the specified pixmap and alpha channel, scaling * it up or down if necessary: */ GrDrawImageToFit(p, state->gc, 0, 0, width, height, img); GrFreeImage(img); /* Destroy the server image object. */ /* Make a new sprite and link it into the list, then return its * address to the caller: */ s = make_sprite(state, fname, width, height, p, a); if (! s) { GrDestroyWindow(a); GrDestroyWindow(p); return 0; } return s; }