void m_draw_scaled_target(MBITMAP *src, int sx, int sy, int sw, int sh,
	int dx, int dy, int dw, int dh, MBITMAP *dst)
{
	ALLEGRO_BITMAP *old_target = al_get_target_bitmap();
	m_set_target_bitmap(dst);
	al_draw_scaled_bitmap(src->bitmap, sx, sy, sw, sh, dx, dy, dw, dh, 0);
	al_set_target_bitmap(old_target);
}
animation::animation(ALLEGRO_BITMAP * spriteSheet,ALLEGRO_BITMAP * bottomSpriteSheet, int xOffset,int yOffset,int width, int height, int xBottomOffset, int yBottomOffset,int bottomWidth, int bottomHeight,int speedTemp)
        :speed_(speedTemp),xOffset_(xOffset),yOffset_(yOffset),oneThrough_(false),xBottomOffset_(xBottomOffset),yBottomOffset_(yBottomOffset),split_(true)
{
    int bitmapWidth = al_get_bitmap_width(spriteSheet);
    int bitmapHeight = al_get_bitmap_height(spriteSheet);
    if(bitmapHeight % height != 0 or bitmapWidth % width != 0)
    {
        //Malformed settings.ini or malformed sprite sheet
        fprintf(stderr, "NIGGERFAGGOT?\n");
    }else
    {
        for(int i = 0; i < bitmapWidth / width; ++i)
        {
            for(int j = 0; j < bitmapHeight / height; ++j)
            {
                ALLEGRO_BITMAP * tempBitmap = al_create_bitmap(width,height);
                al_set_target_bitmap(tempBitmap);
                al_clear_to_color(al_map_rgba(100,100,99,0));
                al_draw_bitmap_region(spriteSheet,i*width, j*height, width, height, 0, 0, 0);
                frames_.push_back(tempBitmap);
            }
        }
    }
    int bottomSheetWidth = al_get_bitmap_width(bottomSpriteSheet);
    int bottomSheetHeight = al_get_bitmap_height(bottomSpriteSheet);
    if(bottomSheetHeight % bottomHeight != 0 or bottomSheetWidth % bottomWidth != 0)
    {
        //Malformed settings.ini or malformed sprite sheet
        fprintf(stderr, "tehfuckrlysdf? %i\n", bottomSheetWidth);
        exit(1);
    }else if(bottomSpriteSheet != NULL)
    {
        for(int j = 0; j < bottomSheetHeight / bottomHeight; ++j)
        {
            for(int i = 0; i < bottomSheetWidth / bottomWidth; ++i)
            {
                ALLEGRO_BITMAP * tempBitmap = al_create_bitmap(bottomWidth,bottomHeight);
                al_set_target_bitmap(tempBitmap);
                al_clear_to_color(al_map_rgba(100,100,99,0));
                al_draw_bitmap_region(bottomSpriteSheet,i*bottomWidth, j*bottomHeight, bottomWidth, bottomHeight, 0, 0, 0);
                bottomFrames_.push_back(tempBitmap);
            }
        }
    }
}
Exemple #3
0
/* Function: al_destroy_bitmap
 */
void al_destroy_bitmap(ALLEGRO_BITMAP *bitmap)
{
   if (!bitmap) {
      return;
   }

   /* As a convenience, implicitly untarget the bitmap on the calling thread
    * before it is destroyed, but maintain the current display.
    */
   if (bitmap == al_get_target_bitmap()) {
      ALLEGRO_DISPLAY *display = al_get_current_display();
      if (display)
         al_set_target_bitmap(al_get_backbuffer(display));
      else
         al_set_target_bitmap(NULL);
   }

   _al_set_bitmap_shader_field(bitmap, NULL);

   _al_unregister_destructor(_al_dtor_list, bitmap);

   if (!al_is_sub_bitmap(bitmap)) {
      ALLEGRO_DISPLAY* disp = _al_get_bitmap_display(bitmap);
      if (al_get_bitmap_flags(bitmap) & ALLEGRO_MEMORY_BITMAP) {
         destroy_memory_bitmap(bitmap);
         return;
      }

      /* Else it's a display bitmap */

      if (bitmap->locked)
         al_unlock_bitmap(bitmap);

      if (bitmap->vt)
         bitmap->vt->destroy_bitmap(bitmap);

      if (disp)
         _al_vector_find_and_delete(&disp->bitmaps, &bitmap);

      if (bitmap->memory)
         al_free(bitmap->memory);
   }

   al_free(bitmap);
}
ALLEGRO_BITMAP bouncer(ALLEGRO_BITMAP)
{
ALLEGRO_BITMAP *bouncer = NULL;

bouncer = al_create_bitmap(squareSize, squareSize);
   if(!bouncer) {
      fprintf(stderr, "failed to create bouncer bitmap!\n");
      al_destroy_display(display);
      al_destroy_timer(timer);
      done = true;
   }

   al_set_target_bitmap(bouncer);

   al_clear_to_color(al_map_rgb(255, 0, 255));

   al_set_target_bitmap(al_get_backbuffer(display));
}
Exemple #5
0
void MapScreen::render()
{
	al_clear_to_color(al_map_rgb(210,210,210));
	al_set_target_bitmap(al_get_backbuffer(m_game->display()));

	m_game->m_camera1.bind();
	m_mapRenderer->render();
	m_player->render();
}
Exemple #6
0
	void Canvas::drawTextureRegion(Texture* texture, Rectangle* srcRect, float x, float y, bool flipped)
	{
		if(al_get_target_bitmap() != this->buffer)
			al_set_target_bitmap(this->buffer);

		Graphics::DrawRegion(texture, srcRect->x, srcRect->y, srcRect->width, srcRect->height, x, y, alpha, flipped);

		TF::engine->resetRenderingBuffer();
	}
void RenderTarget::setAsCurrent(bool force) {
	if (bindRenderTarget != 0 && !force) {
		if (bindRenderTarget->bitmap == this->bitmap) {
			return;
		}
	}
	al_set_target_bitmap(this->bitmap);
	bindRenderTarget = this;
}
Exemple #8
0
	void Canvas::fill(Rectangle* rect, byte r, byte g, byte b)
	{
		if(al_get_target_bitmap() != this->buffer)
			al_set_target_bitmap(this->buffer);

		al_draw_filled_rectangle(rect->x, rect->y, rect->x + rect->width, rect->y + rect->height, al_map_rgb(r,g,b) );

		TF::engine->resetRenderingBuffer();
	}
Exemple #9
0
	void Canvas::drawRect(Rectangle* rect, byte r, byte g, byte b, float thickness)
	{
		if(al_get_target_bitmap() != this->buffer)
			al_set_target_bitmap(this->buffer);

		al_draw_rectangle(rect->x, rect->y, rect->x + rect->width, rect->y + rect->height, al_map_rgb(r,g,b), thickness);

		TF::engine->resetRenderingBuffer();
	}
void PeacemakerBullet::render(Renderer *renderer, Gamestate *state)
{
    std::string mainsprite = getsprite(state, false);
    ALLEGRO_BITMAP *sprite = renderer->spriteloader.requestsprite(mainsprite);
    double direction = std::atan2(vspeed, hspeed);

    al_set_target_bitmap(renderer->background);
    al_draw_rotated_bitmap(sprite, 0, 0, x - renderer->cam_x, y - renderer->cam_y, direction, 0);
}
Exemple #11
0
void create_font_symbols(Board *b){
    ALLEGRO_BITMAP *bmp = NULL, *currbuf = al_get_target_bitmap();
    ALLEGRO_FONT *newfont=NULL;
    int i, j;
    int texth = al_get_font_line_height(b->text_font);
    int bitmap_w, bitmap_h;
    int bw = al_get_bitmap_width(b->clue_unit_bmp[0][0]);
    int bh = al_get_bitmap_height(b->clue_unit_bmp[0][0]);
    int nbw, nbh;
    int range[2];
    al_set_target_bitmap(NULL);
    nbw = bw*(float)texth/bh;
    nbh = texth;
    
    bitmap_w = 4 + b->n*(2+nbw); // extra column for buttons, n>=4
    bitmap_h = 4 + (b->h+1)*(2+nbh);
    
    bmp = al_create_bitmap(bitmap_w, bitmap_h);
    al_set_target_bitmap(bmp);
    al_clear_to_color(NULL_COLOR);
    for(j=0; j<b->h; j++){
        for(i=0; i<b->n; i++){
        // the rectangle is to guarantee the right height for al_grab_font
            al_draw_scaled_bitmap(b->clue_unit_bmp[j][i], 0, 0, bw, bh, 2+i*(2+nbw), 2+ j*(2+nbh), nbw, nbh, 0);
            al_draw_rectangle( 2+i*(2+nbw)+0.5, 2+ j*(2+nbh) + 0.5,  2+i*(2+nbw) + nbw -0.5, 2+j*(2+nbh) + nbh- 0.5, al_map_rgba(1,1,1,1),1);
        }
    }
    
 //    draw the buttons. now j= b->h
    for(i=0;i<b->n;i++){
        bw=al_get_bitmap_width(b->button_bmp[i%4]);
        bh=al_get_bitmap_height(b->button_bmp[i%4]);
        al_draw_scaled_bitmap(b->button_bmp[i%4], 0, 0, bw, bh, 2+i*(2+nbw), 2+ j*(2+nbh), nbw, nbh, 0);
        al_draw_rectangle( 2+i*(2+nbw)+0.5, 2+ j*(2+nbh) + 0.5,  2+i*(2+nbw) + nbw -0.5, 2+j*(2+nbh) + nbh- 0.5, al_map_rgba(1,1,1,1),1);
    }
    
    
    range[0] = BF_CODEPOINT_START;
    range[1] = BF_CODEPOINT_START + b->n*b->h-1 + 4;
    newfont = al_grab_font_from_bitmap(bmp, 1, range);
    al_set_fallback_font(b->text_font, newfont);
    al_set_target_bitmap(currbuf);
    al_destroy_bitmap(bmp);
}
Exemple #12
0
/* Draw our example scene. */
static void draw(void)
{
   float xs, ys, a;
   double dt = 0;
   double t = al_current_time();
   if (last_time > 0) {
      dt = t - last_time;
   }
   last_time = t;

   al_set_target_bitmap(target);
   al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA,
      al_map_rgba_f(1, 1, 1, 1));

   al_draw_filled_rectangle(x, y, x + RW, y + RH, al_map_rgba_f(1, 0, 0, 1));
   al_draw_filled_rectangle(0, 0, W, H, al_map_rgba_f(1, 1, 0, 0.1));

   x += dx * dt;
   if (x < 0) {
      x = 0;
      dx = -dx;
   }
   if (x + RW > W) {
      x = W - RW;
      dx = -dx;
   }
   y += dy * dt;
   if (y < 0) {
      y = 0;
      dy = -dy;
   }
   if (y + RH > H) {
      y = H - RH;
      dy = -dy;
   }

   al_set_target_bitmap(al_get_backbuffer());
   al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ZERO, al_map_rgba_f(1, 1, 1, 1));
   al_clear_to_color(al_map_rgba_f(0, 0, 1, 1));
   xs = 1 + 0.2 * sin(t * ALLEGRO_PI * 2);
   ys = 1 + 0.2 * sin(t * ALLEGRO_PI * 2);
   a = t * ALLEGRO_PI * 2 / 3;
   al_draw_rotated_scaled_bitmap(target, W / 2, H / 2, 320, 240, xs, ys, a, 0);
}
void escribirmensaje(ALLEGRO_EVENT_QUEUE* eventos,ALLEGRO_DISPLAY* display,ALLEGRO_BITMAP* pantalla,int*pestado,int* pestadomensaje,INFOPANTALLA* mipantalla){
    ALLEGRO_FONT* fuente=NULL;
    ALLEGRO_BITMAP* fondo=NULL;
    fondo=al_create_bitmap(250,300); al_set_target_bitmap(fondo); al_clear_to_color(al_map_rgb(255,255,255));
    
    fuente=crearfuente(PEQUENA); if(fuente==NULL){fprintf(stderr,"Fallo al cargar la fuente en escribirmensaje()\n"); exit -1;}
    cambiopantalla(display,pantalla);
    al_draw_bitmap(fondo,0,15,0);
    al_destroy_bitmap(fondo);
    al_draw_text(fuente,al_map_rgb(0,0,0),0,15,ALLEGRO_ALIGN_LEFT,"Escriba su SMS:");
    fuente=crearfuente(MEDIA);
    al_draw_text(fuente,al_map_rgb(0,0,0),0,270,ALLEGRO_ALIGN_LEFT,"Enviar");
    cambiopantalla(display,pantalla);
    
    if(mipantalla->tipoescritura==MODOLIBRE){
            tecladoCLASSIC3(eventos,pantalla,display,mipantalla,pestado);
    
    } else if(mipantalla->tipoescritura==TECLADOANALOGO){
          
        cambiopantalla(display,pantalla);
        al_draw_text(fuente,al_map_rgb(255,0,10),0,100,ALLEGRO_ALIGN_LEFT,"SU MENSAJE ESTA");
        al_draw_text(fuente,al_map_rgb(255,0,10),0,125,ALLEGRO_ALIGN_LEFT,"SIENDO INTRODUCI-");
        al_draw_text(fuente,al_map_rgb(255,0,10),0,150,ALLEGRO_ALIGN_LEFT,"DO MEDIANTE EL TE-");
        al_draw_text(fuente,al_map_rgb(255,0,10),0,175,ALLEGRO_ALIGN_LEFT,"CLADO ANALOGO. (se");
        al_draw_text(fuente,al_map_rgb(255,0,10),0,200,ALLEGRO_ALIGN_LEFT,"actualizara solo)");
        cambiopantalla(display,pantalla);
            
        printf("\nINGRESE SU MENSAJE AQUI Y SERA CARGADO EN EL CELULAR\n");
        printf("\nRECUERDE QUE ESTA INGRESANDO EL MENSAJE PERSONAL\n");
        char personalmessage[140];
        unsigned int i=0;
        while(i<140){
            personalmessage[i]=getchar();
            
            if(personalmessage[i]=='\n'){
                 personalmessage[i]=0;
                break;
             }
            ++i;
            
        }
        strcpy(mipantalla->mensajepersonal,personalmessage);
        cambiopantalla(display,pantalla);
        al_draw_bitmap(fondo,0,15,0);
        cambiopantalla(display,pantalla);
        
            
        } else if(mipantalla->tipoescritura==T9){
            tecladoT9(eventos,pantalla,display);
        }
    *pestado=PANTALLAPRINCIPAL;
    
   
    al_destroy_font(fuente);
    
}
GridFillAnimater::GridFillAnimater(int x, int y, int x0, int y0, int size, ALLEGRO_COLOR color)
{
	ALLEGRO_BITMAP* tmp;
	this->setFrameDur(30);
	_x = x;
	_y = y;
	for (int i = 3; i >= 0; i--)
	{
		tmp = al_create_bitmap(GRID_SIZE + 6, GRID_SIZE + 6);
	
		al_set_target_bitmap(tmp);
	
		al_clear_to_color(al_map_rgb(0, 0, 0));
		al_draw_filled_rectangle(3 - i, 3 - i, GRID_SIZE + 3 + i, GRID_SIZE + 3 + i, color);
		al_convert_mask_to_alpha(tmp, al_map_rgb(0, 0, 0));
		this->addFrame(tmp);
	}
	al_set_target_bitmap(al_get_backbuffer(al_get_current_display()));
}
void init_error_bitmap() {
    // Error bitmap.
    int bmp_error_w, bmp_error_h;
    al_get_text_dimensions(al_create_builtin_font(), "ERROR", NULL, NULL, &bmp_error_w, &bmp_error_h);
    bmp_error = al_create_bitmap(bmp_error_w, bmp_error_h);
    al_set_target_bitmap(bmp_error); {
        al_clear_to_color(al_map_rgba(64, 0, 0, 128));
        al_draw_text(al_create_builtin_font(), al_map_rgb(255, 0, 0), 0, 0, 0, "ERROR");
    } al_set_target_backbuffer(display);
}
Exemple #16
0
Overlay::~Overlay()
{
	{
		CoreSuspender suspend;
		df::global::enabler->renderer = parent;
	}

	al_destroy_mutex(front_mutex);

	al_destroy_bitmap(front);
	al_destroy_bitmap(back);
	front = back = NULL;

	if(al_get_current_display() == NULL){
		al_set_target_bitmap(NULL);
	} else {
		al_set_target_bitmap(al_get_backbuffer(al_get_current_display()));
	}
}
Exemple #17
0
/* Run the FPS test. */
static void run(void)
{
   ALLEGRO_EVENT event;
   int frames = 0;
   double start;

   target = al_create_bitmap(W, H);
   al_set_target_bitmap(target);
   al_clear_to_color(al_map_rgba_f(1, 1, 0, 1));

   al_set_target_backbuffer(display);

   dx = 81;
   dy = 63;

   start = al_get_time();
   while (true) {
      /* Check for ESC key or close button event and quit in either case. */
      if (!al_is_event_queue_empty(queue)) {
         while (al_get_next_event(queue, &event)) {
            switch (event.type) {
               case ALLEGRO_EVENT_DISPLAY_CLOSE:
                  quit = true;
                  goto done;

               case ALLEGRO_EVENT_KEY_DOWN:
                  if (event.keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
                     quit = true;
                     goto done;
                  }
                  if (event.keyboard.keycode == ALLEGRO_KEY_SPACE) {
                      goto done;
                  }
                  break;
            }
         }
      }
      draw();
      print(0, 0, "FPS: %.1f", frames / (al_get_time() - start));
      if (al_get_new_bitmap_flags() & ALLEGRO_FORCE_LOCKING) {
         print(0, al_get_font_line_height(myfont), "using forced bitmap locking");
      }
      else {
         print(0, al_get_font_line_height(myfont), "drawing directly to bitmap");
      }
      print(0, al_get_font_line_height(myfont) * 2,
         "Press SPACE to toggle drawing method.");
      al_flip_display();
      frames++;
   }

done:

   al_destroy_bitmap(target);
}
Exemple #18
0
BigBitmap::BigBitmap(std::string bitmap_to_load, float sector_width, float sector_height) : region_size_w(sector_width), region_size_h(sector_height)
{
    ALLEGRO_BITMAP *restoreto =al_get_target_bitmap();

    orig_flags = al_get_new_bitmap_flags();
    al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP | ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR);
    big_bitmap = al_load_bitmap(bitmap_to_load.c_str());

    if(big_bitmap == nullptr)
    {
        al_show_native_message_box(NULL, "Error", "Failed to load Image", bitmap_to_load.c_str(), NULL, ALLEGRO_MESSAGEBOX_ERROR);
    }

    orig_width = width = al_get_bitmap_width(big_bitmap);
    orig_height = height = al_get_bitmap_height(big_bitmap);
    w_regions = ceil(orig_width / region_size_w);
    h_regions = ceil(orig_height / region_size_h);

    float vector_size = w_regions+1 + h_regions+1;
    bitmaps.reserve(vector_size);

    al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP | ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR);

    for(int h = 0; h < h_regions; h++)
    {
        for(int w = 0; w < w_regions; w++)
        {
            bitmaps.push_back(al_create_bitmap(region_size_w, region_size_h));
            al_set_target_bitmap(bitmaps[bitmaps.size()-1]);
            al_clear_to_color(al_map_rgb(0,0,0));
            al_draw_bitmap_region(big_bitmap, w*region_size_w, h*region_size_h, region_size_w, region_size_h, 0, 0, 0);
            #ifdef _BBDEBUG
            std::string cont = "["+ std::to_string(h) +","+ std::to_string(w) +"]";
            al_draw_text(dgbf, al_map_rgb(255,0,0),region_size_w/2,region_size_h/2,ALLEGRO_ALIGN_CENTRE,cont.c_str());
            al_draw_rectangle(0,0,region_size_w, region_size_h, al_map_rgb(255,0,0),0);
            #endif // _BBDEBUG
        }
    }

    al_set_new_bitmap_flags(orig_flags);
    al_set_target_bitmap(restoreto);
}
Exemple #19
0
void AnimacionSprite::IniciarAnimacion(ALLEGRO_BITMAP *base, int col, int lin, int escala){

	int width=al_get_bitmap_width(base);
	int height=al_get_bitmap_height(base);

	int spriteW=(int)(width/col);
	int spriteH=(int)(height/lin);

	no_frames=col*lin;

	int ncol=0;
	int mlin=0;

	tick=0;
	counter=2;

	//*bases=new ALLEGRO_BITMAP[no_frames];

	ALLEGRO_BITMAP *bases_[no_frames];

	int count=0;

	for(int i=0;i<lin;i++){

		for(int j=0;j<col;j++){

			ALLEGRO_BITMAP *tmp=al_create_bitmap(spriteW, spriteH);

			al_set_target_bitmap (tmp);
			al_draw_bitmap(base,ncol,mlin,0);

			v.push_back(tmp);

			ncol-=spriteW;

			}

			ncol=0;
			mlin-=spriteH;
			count++;

		}

	v.push_back(v.at(0));

	//cout<<v.size()<<endl;

	frame=0;
	bases=bases_;

	x=200;
	y=200;

}
void m_draw_scaled_backbuffer(int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, MBITMAP *dest)
{
	ALLEGRO_BITMAP *old_target = al_get_target_bitmap();
	int old_format = al_get_new_bitmap_format();
	al_set_new_bitmap_format(al_get_bitmap_format(al_get_backbuffer(display)));
	MBITMAP *tmp = m_create_bitmap(sw, sh);
	int scr_w = al_get_display_width(display);
	int scr_h = al_get_display_height(display);
	if (sx+sw > scr_w) {
		sw = scr_w-sx;
	}
	else if (sx < 0) {
		sw -= sx;
		sx = 0;
	}
	if (sy+sh > scr_h) {
		sh = scr_h-sy;
	}
	else if (sy < 0) {
		sh -= sy;
		sy = 0;
	}

#if defined ALLEGRO_RASPBERRYPI || defined ALLEGRO_IPHONE || defined ALLEGRO_ANDROID
	ALLEGRO_LOCKED_REGION *lr1 = al_lock_bitmap(tmp->bitmap, ALLEGRO_PIXEL_FORMAT_ANY, ALLEGRO_LOCK_WRITEONLY);
	ALLEGRO_LOCKED_REGION *lr2 = al_lock_bitmap_region(
		al_get_backbuffer(display),
		sx, sy, sw, sh,
		ALLEGRO_PIXEL_FORMAT_ANY,
		ALLEGRO_LOCK_READONLY
	);
	int pixel_size = al_get_pixel_size(al_get_bitmap_format(al_get_backbuffer(display)));
	for (int y = 0; y < sh; y++) {
		uint8_t *d1 = (uint8_t *)lr1->data + lr1->pitch * y;
		uint8_t *d2 = (uint8_t *)lr2->data + lr2->pitch * y;
		memcpy(d1, d2, pixel_size*sw);
	}
	al_unlock_bitmap(tmp->bitmap);
	al_unlock_bitmap(al_get_backbuffer(display));
#else
	m_set_target_bitmap(tmp);
	al_draw_bitmap_region(al_get_backbuffer(display), sx, sy, sw, sh, 0, 0, 0);
#endif
	m_set_target_bitmap(dest);
	al_draw_scaled_bitmap(
		tmp->bitmap,
		0, 0, sw, sh,
		dx, dy, dw, dh,
		0
	);
	m_destroy_bitmap(tmp);
	al_set_target_bitmap(old_target);
	al_set_new_bitmap_format(old_format);
}
Exemple #21
0
// unused
void convert_grayscale(ALLEGRO_BITMAP *bmp) {
	ALLEGRO_BITMAP *dispbuf = al_get_target_bitmap();
	int x, y, w, h, lum;
	unsigned char r, g, b;
	w = al_get_bitmap_width(bmp);
	h = al_get_bitmap_height(bmp);

	al_set_target_bitmap(bmp);
	al_lock_bitmap(bmp, ALLEGRO_PIXEL_FORMAT_ABGR_8888, ALLEGRO_LOCK_READWRITE);

	for (y = 0; y < h; y++) {
		for (x = 0; x < w; x++) {
			al_unmap_rgb(al_get_pixel(bmp, x, y), &r, &g, &b);
			lum = (0.299*r + 0.587*g + 0.114*b)/2; // dividing by two makes it darker, default should be not dividing
			al_put_pixel(x, y, al_map_rgb(lum, lum, lum)); // RGB to grayscale
		}
	}
	al_unlock_bitmap(bmp);
	al_set_target_bitmap(dispbuf);
}
Exemple #22
0
void iniciar(struct Nave nave[N]){
    for (int i=0; i<N; i++){
    nave[i].x = random;
    nave[i].vx = random;
    nave[i].width = 32;
    nave[i].height = 32;
    nave[i].img = al_create_bitmap(nave[i].width, nave[i].height);
    al_set_target_bitmap(nave[i].img);
    al_clear_to_color(al_map_rgb(rand() % 256, rand() % 256, rand() % 256));
    }
}
Exemple #23
0
void Gamestate_Draw(struct Game *game, struct GamestateResources* data) {

	if (!data->fadeout) {

		char t[255] = "";
		strcpy(t, data->text);
		if (data->underscore) {
			strncat(t, "_", 1);
		} else {
			strncat(t, " ", 1);
		}

		al_set_target_bitmap(data->bitmap);
		al_clear_to_color(al_map_rgba(0,0,0,0));

		al_draw_text(data->font, al_map_rgba(255,255,255,10), game->viewport.width/2,
		             game->viewport.height*0.4167, ALLEGRO_ALIGN_CENTRE, t);

		double tg = tan(-data->tan/384.0 * ALLEGRO_PI - ALLEGRO_PI/2);

		int fade = data->fadeout ? 255 : data->fade;

		al_set_target_bitmap(data->pixelator);
		al_clear_to_color(al_map_rgb(35, 31, 32));

		al_draw_tinted_scaled_bitmap(data->bitmap, al_map_rgba(fade, fade, fade, fade), 0, 0,
		                             al_get_bitmap_width(data->bitmap), al_get_bitmap_height(data->bitmap),
		                             -tg*al_get_bitmap_width(data->bitmap)*0.05,
		                             -tg*al_get_bitmap_height(data->bitmap)*0.05,
		                             al_get_bitmap_width(data->bitmap)+tg*0.1*al_get_bitmap_width(data->bitmap),
		                             al_get_bitmap_height(data->bitmap)+tg*0.1*al_get_bitmap_height(data->bitmap),
		                             0);

		al_draw_bitmap(data->checkerboard, 0, 0, 0);

		al_set_target_backbuffer(game->display);

		al_draw_bitmap(data->pixelator, 0, 0, 0);

	}
}
Exemple #24
0
ALLEGRO_BITMAP* Map::Render(float startx, float starty, float width, float height, ALLEGRO_DISPLAY* d) {

	if (lastsx == startx && lastsy == starty && lastw == width && lasth == height)
		return cache_area;

	if (cache_area)
		al_destroy_bitmap(cache_area);

	cache_area = al_create_bitmap(width, height);

	al_set_target_bitmap(cache_area);

	al_draw_bitmap_region(cache_map, startx*TILE_SIZE, starty*TILE_SIZE, width, height,
		0, 0, 0);
	
	al_set_target_bitmap(al_get_backbuffer(d));

	lastsx = startx; lastsy = starty; lastw = width; lasth = height;

	return cache_area;
}
ALLEGRO_BITMAP *generate_interpolator_graph_bitmap(float(* interpolator_func)(float), float size, ALLEGRO_COLOR col, float thickness, float padding)
{
   // setup the drawing surface
   ALLEGRO_BITMAP *surface = al_create_bitmap(size, size);
   ALLEGRO_STATE state;
   al_store_state(&state, ALLEGRO_STATE_TARGET_BITMAP);
   al_set_target_bitmap(surface);
   al_clear_to_color(color::transparent);


   //
   //	 start drawing the graph
   //


   float line_width = thickness;

   float w = size;
   float h = size;

   float x = padding;
   float y = padding;
   w += padding*2;
   h += padding*2;

   //y *= -1;
   h *= -1;

   int num_points = 50;

   vec2d previous_point(0, 1);
   for (int i=0; i<=(num_points-1); i++)
   {
      float point_x = (float)i/(num_points-1);
      float point_y = interpolator_func(point_x);

      point_x *= (size-padding*2);
      point_y *= -(size-padding*2);

      point_x += x;
      point_y += y+(size-padding*2);

      al_draw_filled_circle(point_x, point_y, line_width*1.3, col);
   }



   // restore things to the way they were
   al_restore_state(&state);

   // return the created image
   return surface;
}
Exemple #26
0
//==================================================== DRAW_MENU ========================================================//
void Menu_Draw(struct Game *game) {
//RYSOWANIE TŁA Z MENU//
    al_draw_bitmap(game->menu.menu_bitmap,0,0,0);
    al_set_target_bitmap(al_get_backbuffer(game->display));
    al_draw_bitmap_region(game->menu.mills, 0,game->menu.mills_y,   82,85,   799,485,  0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,0,  231,64,  game->menu.cldpos1*1.2+300,0, 231,64, 0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,64,  213,44,  game->menu.cldpos1+53,95, 213,44, 0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,108,  245,54,  game->menu.cldpos1*1.5+723,24, 245,54, 0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,162,  190,41,  game->menu.cldpos1*0.8+665,138, 190,41, 0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,0,  231,64,  game->menu.cldpos2+475,175, 231*0.7,64*0.7, 0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,64,  213,44,  game->menu.cldpos2*1.15+250,70, 213*0.9,44*0.9, 0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,108,  245,54,  game->menu.cldpos2*1.1+22,220, 245*0.8,54*0.8, 0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,162,  190,41,  game->menu.cldpos3+885,275, 190*0.7,41*0.7, 0);
    al_draw_scaled_bitmap(game->menu.cloud,  0,64,  213,44,  game->menu.cldpos3*0.7+520,290, 213*0.4,44*0.4, 0);
    al_draw_bitmap(game->menu.smok,0,95,0);
//PRZYCISKI//
    if(game->gamestate==0){
        al_draw_bitmap_region(game->menu.buttons, 0,0,   195,43,   635,41,  0); //new game
        if(game->play.dragon_lives>0)
            al_draw_bitmap_region(game->menu.buttons, 0,43,  195,43,   635,119, 0); //resume game
        else
            al_draw_bitmap_region(game->menu.buttons, 0,215,  195,43,   635,119, 0); //resume game przygaszony
        al_draw_bitmap_region(game->menu.buttons, 0,86,  195,43,   635,197, 0); //options
        al_draw_bitmap_region(game->menu.buttons, 0,129, 195,43,   635,275, 0); //quit
    }
//WYNIKI I INSTRUKCJA GRY//
    if(game->gamestate==2){
        al_draw_bitmap_region(game->menu.buttons, 195,0, 132,211,   698,41, 0); //tablica wyników
        al_draw_bitmap_region(game->menu.buttons, 0,258, 498,211,   118,41, 0); //tablica informacji o grze
        al_draw_bitmap_region(game->menu.buttons, 0,172, 195,43,    635,275, 0); //przycisk 'menu'

        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 737,84,  ALLEGRO_ALIGN_LEFT, "1.     %i", game->table[0]); // stara poprawiona wysokość = 77 i co 20
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 737,104, ALLEGRO_ALIGN_LEFT, "2.     %i", game->table[1]);
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 737,124, ALLEGRO_ALIGN_LEFT, "3.     %i", game->table[2]);
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 737,144, ALLEGRO_ALIGN_LEFT, "4.     %i", game->table[3]);
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 737,164, ALLEGRO_ALIGN_LEFT, "5.     %i", game->table[4]);
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 737,184, ALLEGRO_ALIGN_LEFT, "6.     %i", game->table[5]);
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 737,204, ALLEGRO_ALIGN_LEFT, "7.     %i", game->table[6]);
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 737,224, ALLEGRO_ALIGN_LEFT, "8.     %i", game->table[7]);
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,61,  ALLEGRO_ALIGN_LEFT, "Press         or          to move up and         or          to move down.");
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,81,  ALLEGRO_ALIGN_LEFT, "Press                    or right click mouse to fire a fiery bullet!");
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,101, ALLEGRO_ALIGN_LEFT, "To pause game or enter menu press          .");
        //al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,121, ALLEGRO_ALIGN_LEFT, "");
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,141, ALLEGRO_ALIGN_LEFT, "You've got three lives.");
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,161, ALLEGRO_ALIGN_LEFT, "Avoid thrown pitchforks - they will kill you!");
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,181, ALLEGRO_ALIGN_LEFT, "Flying into a cloud of flour disables you for a while.");
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,201, ALLEGRO_ALIGN_LEFT, "Do not fly too low - you will fall and die.");
        al_draw_textf(game->sfont, al_map_rgb(70,64,58), 138,221, ALLEGRO_ALIGN_LEFT, "Shepherd boys fire exploding sheep defragmentators!");
    }
//BITMAPA KURSORA//
    al_draw_bitmap(game->menu.cursor,game->pos_x, game->pos_y, 0);
}
Exemple #27
0
void MenuScreen::render()
{

	m_game->m_camera2.bind();

	al_clear_to_color(al_map_rgb(63,63,116));
	al_set_target_bitmap(al_get_backbuffer(m_game->display()));

	al_draw_text(m_game->m_fontBig, al_map_rgb(203, 219, 252), 15, 11, 0, "Pheee");
	al_draw_text(m_game->m_fontBig, al_map_rgb(203, 219, 252), 15, 31, 0, "Strew");
	al_draw_text(m_game->m_fontBig, al_map_rgb(203, 219, 252), 15, 51, 0, "Quest");

}
ALLEGRO_BITMAP * t3f_resize_bitmap(ALLEGRO_BITMAP * bp, int w, int h)
{
	ALLEGRO_BITMAP * rbp = NULL;
	int start_w = al_get_bitmap_width(bp);
	int start_h = al_get_bitmap_height(bp);
	int x, y;
	float pixx, pixx_f, pixy, pixy_f;
	ALLEGRO_COLOR a, b, c, d, ab, cd, result;
	ALLEGRO_STATE old_state;

	/* don't resize if size is already correct */
	if(w == start_w && h == start_h)
	{
		return al_clone_bitmap(bp);
	}

	/* scale with software filtering */
	rbp = al_create_bitmap(w, h);
	if(!rbp)
	{
		printf("failed to create return bitmap\n");
		return NULL;
	}
	al_lock_bitmap(rbp, ALLEGRO_LOCK_READWRITE, ALLEGRO_PIXEL_FORMAT_ANY);
	al_store_state(&old_state, ALLEGRO_STATE_TARGET_BITMAP);
	al_set_target_bitmap(rbp);
	for(y = 0; y < h; y++)
	{
		pixy = ((float)y / h) * ((float)start_h - 1);
		pixy_f = floor(pixy);
		for(x = 0; x < w; x++)
		{
			pixx = ((float)x / w) * ((float)start_w - 1);
			pixx_f = floor(pixx);

			a = al_get_pixel(bp, pixx_f, pixy_f);
			b = al_get_pixel(bp, pixx_f + 1, pixy_f);
			c = al_get_pixel(bp, pixx_f, pixy_f + 1);
			d = al_get_pixel(bp, pixx_f + 1, pixy_f + 1);

			ab = interpolate(a, b, pixx - pixx_f);
			cd = interpolate(c, d, pixx - pixx_f);
			result = interpolate(ab, cd, pixy - pixy_f);

			al_put_pixel(x, y, result);
		}
	}
	al_unlock_bitmap(rbp);
	al_restore_state(&old_state);
	return rbp;
}
Exemple #29
0
/* Function: al_restore_state
 */
void al_restore_state(ALLEGRO_STATE const *state)
{
   thread_local_state *tls;
   INTERNAL_STATE *stored;
   int flags;

   if ((tls = tls_get()) == NULL)
      return;
   
   stored = (void *)state;
   flags = stored->flags;

   if (flags & ALLEGRO_STATE_NEW_DISPLAY_PARAMETERS) {
      _STORE(new_display_flags);
      _STORE(new_display_refresh_rate);
      _STORE(new_display_adapter);
      _STORE(new_window_x);
      _STORE(new_window_y);
      _STORE(new_display_settings);
   }
   
   if (flags & ALLEGRO_STATE_NEW_BITMAP_PARAMETERS) {
      _STORE(new_bitmap_format);
      _STORE(new_bitmap_flags);
   }
   
   if (flags & ALLEGRO_STATE_DISPLAY) {
      _STORE(current_display);
      _al_set_current_display_only(tls->current_display);
   }

   if (flags & ALLEGRO_STATE_TARGET_BITMAP) {
      _STORE(target_bitmap);
      al_set_target_bitmap(tls->target_bitmap);
   }
   
   if (flags & ALLEGRO_STATE_BLENDER) {
      tls->current_blender = stored->stored_blender;
   }

   if (flags & ALLEGRO_STATE_NEW_FILE_INTERFACE) {
      _STORE(new_file_interface);
      _STORE(fs_interface);
   }
   
   if (flags & ALLEGRO_STATE_TRANSFORM) {
      ALLEGRO_BITMAP *bitmap = al_get_target_bitmap();
      if (bitmap)
         al_use_transform(&stored->stored_transform);
   }
}
Exemple #30
0
bool TGlasses::CollidedWith(TObject &obj)
{
    if (&obj == &GLOBALS::player)
    {
        const unsigned int atlasWidth_tiles = al_get_bitmap_width(GLOBALS::tileAtlas_unscaled) / TILE_WIDTH_PIXELS_UNSCALED;
        unsigned int tileY, tileX;
        signed int tileID, tileIndex;

        al_set_target_bitmap(GLOBALS::background_scaled);

        // turn on the invisible platforms
        for (tileIndex = 0; tileIndex < (LEVEL_HEIGHT_TILES * LEVEL_WIDTH_TILES); ++tileIndex)
        {
            if (level1MapData.codes[tileIndex] == eCODE_INVISIBLE_PLATFORM)
            {
                level1MapData.codes[tileIndex] = 0;

                tileID = 53;

                level1MapData.bounds[tileIndex] = SOLID_TOP;
                level1MapData.midTiles[tileIndex] = tileID;

                tileY = tileIndex / LEVEL_WIDTH_TILES;
                tileX = tileIndex % LEVEL_WIDTH_TILES;
                al_draw_scaled_bitmap(GLOBALS::tileAtlas_unscaled,
                                      (tileID % atlasWidth_tiles) * TILE_WIDTH_PIXELS_UNSCALED, (tileID / atlasWidth_tiles) * TILE_HEIGHT_PIXELS_UNSCALED,
                                      TILE_WIDTH_PIXELS_UNSCALED, TILE_HEIGHT_PIXELS_UNSCALED,
                                      (TILE_WIDTH_PIXELS_UNSCALED * SCALE_FACTOR) * tileX, (TILE_HEIGHT_PIXELS_UNSCALED * SCALE_FACTOR) * tileY,
                                      TILE_WIDTH_PIXELS_UNSCALED * SCALE_FACTOR, TILE_HEIGHT_PIXELS_UNSCALED * SCALE_FACTOR,
                                      0);
            }
        }
        // paint over glasses graphic in background image
        tileY = m_y/TILE_HEIGHT_PIXELS_UNSCALED;
        tileX = m_x/TILE_WIDTH_PIXELS_UNSCALED;

/*
        tileID = level1MapData.backTiles[(tileY*LEVEL_WIDTH_TILES)+tileX];

        al_draw_scaled_bitmap(GLOBALS::tileAtlas_unscaled,
                              (tileID % atlasWidth_tiles) * TILE_WIDTH_PIXELS_UNSCALED, (tileID / atlasWidth_tiles) * TILE_HEIGHT_PIXELS_UNSCALED,
                              TILE_WIDTH_PIXELS_UNSCALED, TILE_HEIGHT_PIXELS_UNSCALED,
                              (TILE_WIDTH_PIXELS_UNSCALED * SCALE_FACTOR) * tileX, (TILE_HEIGHT_PIXELS_UNSCALED * SCALE_FACTOR) * tileY,
                              TILE_WIDTH_PIXELS_UNSCALED * SCALE_FACTOR, TILE_HEIGHT_PIXELS_UNSCALED * SCALE_FACTOR,
                              0);
*/
        return true;
    }

    return false;
}