User Tools

Site Tools


c:graphics.h:imagesize

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

c:graphics.h:imagesize [2024/02/16 01:05] (current)
Line 1: Line 1:
 +===== imagesize =====
 +
 +
 +====Syntax of imagesize ==== 
 + <code c>
 +#include <graphics.h>
 +unsigned imagesize(int left, int top, int right, int bottom);
 +  </code>
 +
 +
 +==== Description of imagesize ==== 
 +<code c>
 +imagesize determines the size of the memory area required to store a bit
 +image. If the size required for the selected image is greater than or
 +equal to 64K - 1 bytes, imagesize returns 0xFFFF (-1).
 +</code>
 +
 +
 +==== Example of imagesize ====
 +<code c>
 +/* imagesize example */
 +
 +#include <graphics.h>
 +#include <stdlib.h>
 +#include <stdio.h>
 +#include <conio.h>
 +
 +#define ARROW_SIZE 10
 +
 +void draw_arrow(int x, int y);
 +
 +int main(void)
 +{
 +   /* request autodetection */
 +   int gdriver = DETECT, gmode, errorcode;
 +   void *arrow;
 +   int x, y, maxx;
 +   unsigned int size;
 +
 +   /* initialize graphics and local variables */
 +   initgraph(&gdriver, &gmode, "");
 +
 +   /* read result of initialization */
 +   errorcode = graphresult();
 +   if (errorcode != grOk) {  /* an error occurred */
 +
 +printf("Graphics error: %s\n", grapherrormsg(errorcode));
 +printf("Press any key to halt:");
 +getch();
 +exit(1);   /* terminate with an error code */
 +   }
 +
 +   maxx = getmaxx();
 +   x = 0;
 +   y = getmaxy() / 2;
 +
 +   /* draw the image to be grabbed */
 +   draw_arrow(x, y);
 +
 +   /* calculate the size of the image */
 +   size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);
 +
 +   /* allocate memory to hold the image */
 +   arrow = malloc(size);
 +
 +
 +   /* grab the image */
 +   getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);
 +
 +   /* repeat until a key is pressed */
 +   while (!kbhit()) {
 +/* erase old image */
 +putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
 +x += ARROW_SIZE;
 +if (x >= maxx)
 +    x = 0;
 +
 +/* plot new image */
 +putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
 +   }
 +
 +   /* clean up */
 +   free(arrow);
 +   closegraph();
 +   return 0;
 +}
 +
 +void draw_arrow(int x, int y)
 +
 +{
 +   /* draw an arrow on the screen */
 +   moveto(x, y);
 +   linerel(4*ARROW_SIZE, 0);
 +   linerel(-2*ARROW_SIZE, -1*ARROW_SIZE);
 +   linerel(0, 2*ARROW_SIZE);
 +   linerel(2*ARROW_SIZE, -1*ARROW_SIZE);
 +}
 +</code>
 +
 +
 +==== See also ====
 +[[getimage]]
 +[[putimage]]
 +
 +
 +===== output of imagesize example ===== 
 +
 +    no output of example at the moment
 +    do not hesitate and add it...  
 +
 +
  

on the occasion of the current invasion of Russia in Ukraine

Russian Stop this War
c/graphics.h/imagesize.txt · Last modified: 2024/02/16 01:05 (external edit)

Impressum Datenschutz