/* Creates ST logo. Pieter Suurmond 2001-2004. */ #include #include #include #include "gt.h" /*-----------------------------------------------------------------------------*/ int main() { /* Generates 5 test-images in the current directory. */ short e; RGBPIC PIC; float hertz, RGBflt[3]; /* SCALE HERE: */ float X, cX, cY, angle, r, range, low_r, z, s, F=12.0; int x, x2, y, y2, k; unsigned char R, G, B; /* 600 x 400, white background color. */ if (gtCreateMemRGB(&PIC, 600, 400, 255, 255, 255)) { printf("Not enough memory to allocate RGB space.\n"); return 1; } cX = 400.0; cY = 200.0; gtInitHertzToRGBtables(); low_r = 9.0 * F; range = 6.0 * F; for (r = low_r + range; r >= low_r; r -= 0.25) { X = cX - r; hertz = 40.0e13 + (37.0e13 * (0.06 + (low_r + range - r) / (1.11 * range))); gtHertzToRGB(hertz, 1.0, RGBflt); R = (unsigned char)(0.5 + RGBflt[0]); G = (unsigned char)(0.5 + RGBflt[1]); B = (unsigned char)(0.5 + RGBflt[2]); for (angle = -0.78 + 0.78*(r-low_r) / range; angle < 3.1416; angle += 0.05 / F) { x = (int)(0.5 + X + r * cos(angle)); y = (int)(0.5 + cY - r * sin(angle)); gtSetPixel(PIC, x,y, R,G,B); } } /*------------------------------------------------------------*/ z = cX - 0.5 * (low_r + range); /* Hammer. */ s = F * 7.5; y = cY; y2 = cY + s; for (x = (int)(z - 0.25*F); x <= (int)(z + 0.25*F); x++) { x2 = x + s; gtDrawLine(PIC, x,y, x2,y2, 0,0,0); /* Black. */ y--; y2--; gtDrawLine(PIC, x,y, x2,y2, 0,0,0); } z = cX - 0.34 * (low_r + range); y = cY - F * 1.8 - 0.5*F; k = 0; for (x = (int)(z - 0.5*F); x <= (int)(z + 0.5*F); x++) { x2 = x - F * 5.0; y2 = y + F * 5.0; gtDrawLine(PIC, x+k, y-k, x2, y2, 0,0,0); gtDrawLine(PIC, x+1+k,y-k, x2+1,y2, 0,0,0); y++; k++; } /*------------------------------------------------------------*/ e = gtSaveMemRGB(PIC, "stLogo.jpg", 100); /* Quality 100%. */ gtDestroyMemRGB(&PIC); if (e) { printf("Failed to save jpeg-file to disk.\n"); return(2); } printf("Ok.\n"); return(0); } /*-----------------------------------------------------------------*/