#include #include #include #define CHECK_STATUS(x) do { if (status != Ok) { printf ("status[%d] == %d!\n", status_counter++, status); if(x) { exit(-1); } } else { printf ("status[%d] == Ok\n", status_counter++); } } while (0) int main ( int argc, char ** argv ) { unsigned long gdiplusToken; GdiplusStartup(&gdiplusToken, NULL, NULL); int width, height ; int status_counter=0; int a,r,g,b ; cairo_surface_t * surface ; cairo_status_t cairo_status ; GpGraphics * graphics ; GpBitmap * image ; GpPen * pen ; GpStatus status ; FILE * fileout ; width=200; height=200; a=255 ; r=255; g=0; b=0; GpBitmap *bitmap;^M status = GdipCreateBitmapFromScan0(200, 200, 0, Format32bppArgb, 0, &bitmap); CHECK_STATUS(1); GpRect rect; rect.X = 0; rect.Y = 0; rect.Width = 200; rect.Height = 200; status = GdipGetImageGraphicsContext(bitmap, &graphics); CHECK_STATUS(1); status = GdipSetVisibleClip_linux (graphics, &rect); CHECK_STATUS(1); status = GdipCreatePen1 ( 0x00FF00FF, 5 , UnitPixel , &pen ) ; CHECK_STATUS(1); status = GdipDrawLine ( graphics , pen , 0 , 0 , 100 , 100 ) ; CHECK_STATUS(1); WCHAR file[] = {'t', 'e', 's', 't', '.', 'p', 'n', 'g', 0}; UINT numEncoders, size, cnt; ImageCodecInfo *encoders, *encoder; GdipGetImageEncodersSize (&numEncoders, &size); if (numEncoders == 0) { fprintf ( stdout , "numEncoders == 0\n" ) ; encoders = GdipAlloc (size); GdipGetImageEncoders (numEncoders, size, encoders); status = GdipSaveImageToFile (bitmap, file, &(encoders[1]).Clsid, 0); CHECK_STATUS(1); GdipFree (encoders); GdiplusShutdown(gdiplusToken); return 0; }