/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ²²²²²²²²²²²²²²²²²²²²²²² KNOW-HOW.SLANG.GRAPHICS ²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ This text contain complete description of KNOW_HOW.SLANG.GRAPHICS 5.0x. In addition to KNOW_HOW.SLANG and KNOW_HOW.GRAPHICS power it provide the following features: 1. KNOW-HOW.SLANG.GRAPHICS is the BASIC with access to drawing tools of current product (BGI, GDI ...). It provide to user the possibility to load graphical resourses (DOS or Windows, or other if he add some code) and interprete them in run-time. There are very many applications of this tool, like run-time changeable GUI. 2. Maketing (without stage of compilation, KNOW-HOW.VECTOR, the ready-to-use product of this type, is included) of BGI, GDI and so on applications, vector drawing tools. 3. Together with BASIC math. functions it could also be used for data plotting, spreadsheets and so on. °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Functions°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° 5.0x version supports following functions: line(x1,y1,x2,y2) lineto(x2,y2) moveto(x1,y1) ellipse(x,y,stangle,endangle,xr,yr) rectangle(l,t,r,b) poly(numpoints, POLY), as poly(4, 100,100, 200,200, 200,100, 100,100) text(x,y,string) color(color) set_rgb(r,g,b) // set RGB color style(fillstyle, fillcolor) textsize(mx,dx,my,dy) font("BGI font file name") fill(1 or 0) - fill or not closed figures zoom(zx, zy) addzoom(zx, zy) scroll(x, y) addscroll(x, y) rotate(alpha, x, y) setline(width) mirror(x), set mirror, all output will be reflected rot_on // add rotations to stack for complex rotations rot_off // flash stack of rotations endrotate // pop last rotation °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° FILES °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ÞÞÞÞÞÞÞ Files OOPIC.H and OOPIC.CPP contains class, derived from Slang and KH_Paint. ÞÞÞÞÞÞÞ Files USER1.INC and USERLANG.INC are modified to define new operators: { "line", LINE }, { "lineto", LINETO }, { "ellipse", ELLIPSE }, { "rectangle", RECTANGLE }, { "poly", POLY }, { "text", TXT }, { "moveto", MOVETO }, { "color", SETCOLOR }, { "set_rgb", SETCOLOR_RGB }, { "style", SETFILLSTYLE }, { "textsize", SETTEXTSIZE }, { "font", SETFONT }, { "fill", SETFILL }, { "zoom", ZOOM }, { "addzoom", ADDZOOM }, { "scroll", SCROLL }, { "addscroll", ADDSCROLL }, { "rotate", ROTATE }, { "setline", SETLINE }, { "mirror", MIRROR }, { "rot_on", ROTATE_ON }, { "rot_off", ROTATE_OFF }, { "endrotate", ENDROTATE }, in USERLANG and: , LINE = USER + 1, LINETO, ELLIPSE, RECTANGLE, POLY, TXT, MOVETO, SETCOLOR, SETCOLOR_RGB, SETFILLSTYLE, SETTEXTSIZE, SETFONT, SETFILL, ZOOM, ADDZOOM, SCROLL, ADDSCROLL, ROTATE, SETLINE, MIRROR, ROTATE_ON, ROTATE_OFF, ENDROTATE in USER1.INC Defines are set in Options/Compiler/Code Generation. Example, DOS: #include // only for interruption on key pressed ************** class Demo : public OOPic { virtual void terminate(); // User-defined terminator (ESC and so on) }; ///////////// void Demo::terminate() { if(kbhit()) { getch(); if(kbhit()) getch(); serror(23); } } void main() { int gdriver = DETECT, gmode; initgraph(&gdriver, &gmode, ""); Demo* basic = new Demo(); // basic->basic(basic->load_program("oopic.vec")); char s[80] = "mirror(0,0)\r\nrotate(0,0,0)\r\nleft=10\r\ntop=10\r\nright=200\r\nbottom=200"; basic->basic(s); char s1[80] = "color(15):style(1,7):header=\"Hello\"font(\"litt.chr\"):textsize(1,1,1,1)"; basic->basic(s1); basic->basic(basic->load_program("window.vec")); delete basic; closegraph(); } Example, Windows: // This example demonstrates output to OWL window. If necessary, // any other Windows library could be used. #include class Demo : public OOPic { public: void demo(); }; /////////////////// void Demo::demo() { basic(load_program("oopic.vec")); } class TMyApp : public TApplication { public: TMyApp(LPSTR AName, HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) : TApplication(AName, hInstance, hPrevInstance, lpCmdLine, nCmdShow) {}; virtual void InitMainWindow(); }; _CLASSDEF(TMyWindow) class TMyWindow : public TWindow, public Demo { public: TMyWindow(PTWindowsObject AParent, LPSTR ATitle) : TWindow(AParent, ATitle), Demo() { DC = GetDC(HWindow); } virtual void WMLButtonDown(RTMessage Msg) = [WM_FIRST + WM_LBUTTONDOWN]; }; void TMyWindow::WMLButtonDown(RTMessage) { DC = GetDC(HWindow); demo(); } void TMyApp::InitMainWindow() { MainWindow = new TMyWindow(NULL, Name); } int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { TMyApp MyApp("Sample KNOW-HOW.GRAPHICS Program", hInstance, hPrevInstance, lpCmdLine, nCmdShow); MyApp.Run(); return MyApp.Status; }