/* menu */ void shell (void) { /* run shell */ VClear (); VSync (); VRestore (); runl(0, ABSSHELL, SHELL, "-i", NULL); VReopen (); VClear (); setdir (cur == left ? right : left, NULL); setdir (cur, NULL); }
/* main, menu */ void quit (void) { int choice; choice = getchoice (ppid == 1, " Demos Commander ", ppid == 1 ? "Do you want to log out ?" : "Do you want to quit the Demos Commander ?", NULL, " Yes ", " No ", " Exec shell "); if (choice == 0) quitdeco (); if (choice == 2) { /* exec shell */ VClear (); VSync (); v.VClose(); execle (ABSSHELL, SHELL, "-i", NULL, EnvVector); exit (0); } /* else stay here */ }
void CSelectBox::VReset() { VClear(); CWidget::VReset(); }
main (int argc, char **argv, char **envp) { register c; if (argc > 2) { outerr("Usage: deco [dirname]\n",0); exit (1); } outerr("Demos Commander, Copyright (C) 1989-1994 Serge Vakulenko\n",0); palette = dflt_palette; EnvInit (envp); uid = getuid (); gid = getgid (); # ifdef GROUPS gidnum = getgroups (sizeof(gidlist)/sizeof(gidlist[0]), (unsigned int *)gidlist); # endif ppid = getppid (); user = username (uid); group = groupname (gid); tty = ttyname (0); machine = getmachine (); #if 0 sigign(); #else signal(SIGTERM, SIG_IGN); signal(SIGQUIT, SIG_IGN); signal(SIGINT, SIG_IGN); # ifdef SIGTSTP signal(SIGTSTP, SIG_IGN); # endif #endif init (); // inithome (); VClear (); /* init class dir */ if (argc > 1) // chdir (argv [1]); left = new dir(argv [1]); else left = new dir; right = new dir; left->d.basecol = 0; right->d.basecol = 40; /*-----------*/ initfile.read(); if (uid == 0) palette.dimfg = 6; v.VSetPalette (palette.fg, palette.bg, palette.revfg, palette.revbg, palette.boldfg, palette.boldbg, palette.boldrevfg, palette.boldrevbg, palette.dimfg, palette.dimbg, palette.dimrevfg, palette.dimrevbg); setdir (left, "."); setdir (right, "."); left->chdir(left->d.cwd); cur = left; draw.draw(cur, left, right); for (;;) { if (! cmdreg) draw.drawcursor(cur); // cmd.drawcmd(cur, &left, &right); VSync (); c = KeyGet (); if (! cmdreg) draw.undrawcursor(cur); switch (c) { case '+': /* select */ case '-': /* unselect */ if (! cpos && ! cmdreg && ! cur->d.status) { if (c == '+') tagall (); else untagall (); draw.draw(cur, left, right); continue; } default: // if (c>=' ' && c<='~' || c>=0300 && c<=0376) { // if (cpos || c!=' ') // cmd.inscmd(c); // continue; // } VBeep (); continue; // case cntrl ('V'): /* quote next char */ // cmd.inscmd(quote ()); // continue; // case cntrl ('J'): /* insert file name */ // if (! cmdreg && ! cur->status) // cmd.namecmd(cur); // continue; // case cntrl ('G'): // cmd.delcmd(); // continue; // case meta ('b'): /* backspace */ // if (cpos) { // cmd.leftcmd(); // cmd.delcmd(); // } // continue; case cntrl ('O'): /* set/unset command mode */ case cntrl ('P'): /* set/unset command mode */ switchcmdreg (); if (! cmdreg) visualwin = 1; draw.draw(cur, left, right); continue; case cntrl ('M'): /* return */ // if (command [0]) { // cmd.exec(cur, &left, &right, 1, 1); // draw.draw(cur, &left, &right); // continue; // } if (cmdreg) { cmdreg = 0; if (! visualwin) { visualwin = 1; setdir (cur==left ? right : left, NULL); setdir (cur, NULL); } draw.draw(cur, left, right); continue; } execute (); continue; case cntrl (']'): /* redraw screen */ VRedraw (); continue; // case cntrl ('B'): /* history */ // if (! visualwin) // VClearBox (1, 0, LINES-2, 80); // cmd.histmenu(cur, &left, &right); // draw.draw(cur, &left, &right); // continue; case meta ('A'): /* f1 */ genhelp (); draw.draw(cur, left, right); continue; case meta ('B'): /* f2 */ udm.menu(); draw.draw(cur, left, right); continue; case meta ('I'): /* f9 */ mymenu.runmenu (cur==left ? 'l' : 'r'); draw.draw(cur, left, right); continue; case meta ('J'): /* f0 */ case cntrl ('C'): /* quit */ quit (); continue; case cntrl ('U'): /* swap panels */ swappanels (); draw.draw(cur, left, right); continue; case cntrl ('F'): /* full screen */ fullscreen (); draw.draw(cur, left, right); continue; case cntrl ('^'): /* cd / */ directory (0, 'r'); if (! cur->d.status) draw.drawdir(cur, 1, left, right); continue; case cntrl ('\\'): /* cd $HOME */ directory (0, 'o'); if (! cur->d.status) draw.drawdir(cur, 1, left, right); continue; // case cntrl ('Y'): /* clear line */ // command [cpos = 0] = 0; // continue; // case cntrl ('X'): /* next history */ // cmd.nextcmd(); // continue; // case cntrl ('E'): /* prev history */ // cmd.prevcmd(); // continue; // case cntrl ('S'): /* char left */ // case cntrl ('A'): /* char left */ // cmd.leftcmd(); // continue; // case cntrl ('D'): /* char right */ // cmd.rightcmd(); // continue; case cntrl ('I'): /* tab */ if (cmdreg) {} // if (command [cpos]) // cmd.endcmd(); // else // cmd.homecmd(); else { switchpanels (); if (fullwin) { draw.drawbanners(); draw.drawdir(cur, 0, left, right); break; } } continue; case cntrl ('W'): /* double width */ if (! cmdreg) { setdwid (); draw.draw(cur, left, right); } continue; // case meta ('G'): /* f7 */ // makedir (); // draw.draw(cur, &left, &right); // continue; case meta ('h'): /* home */ case meta ('e'): /* end */ case meta ('u'): /* up */ case meta ('d'): /* down */ case meta ('l'): /* left */ case meta ('r'): /* right */ case meta ('n'): /* next page */ case meta ('p'): /* prev page */ case cntrl ('K'): /* find file */ case cntrl ('R'): /* reread catalog */ case cntrl ('T'): /* tag file */ case meta ('C'): /* f3 */ case meta ('D'): /* f4 */ case meta ('E'): /* f5 */ case meta ('F'): /* f6 */ case meta ('H'): /* f8 */ case cntrl ('L'): /* status */ if (cmdreg || cur->d.status) {} // docmdreg (c); else doscrreg (c); continue; } } }
int main(void) { //assign X component vec1[0] = 2.0; //assign Y component vec1[1] = 2.0; //assign Z component vec1[2] = 2.0; vec2[0] = 5.0; vec2[1] = 5.0; vec2[2] = 5.0; VectorAdd(vec1,vec2,vec3); printf("Vector addition: "); int i; for(i = 0; i < 3; i++) { printf("%g ", vec3[i]); } VectorSubtract(vec1,vec2,vec3); printf("\nVector subtraction: "); for(i = 0; i < sizeof(vec3)/sizeof(int); i++) { printf("%g ", vec3[i]); } DotProduct(vec1,vec2,cheez); printf("\nDot product: %g", cheez); Scaling(vec1, 2); printf("\nScaling by 2: "); for(i = 0; i < sizeof(vec1)/sizeof(int); i++) { printf("%g ", vec1[i]); } VCopy(vec1, vec3); printf("\nCopying vec1 to vec3: "); for(i = 0; i < sizeof(vec3)/sizeof(int); i++) { printf("%g ", vec3[i]); } VClear(vec3); printf("\nClearing vec3: "); for(i = 0; i < sizeof(vec3)/sizeof(int); i++) { printf("%g ", vec3[i]); } Inverse(vec2); printf("\nInverse of vec2: "); for(i = 0; i < sizeof(vec3)/sizeof(int); i++) { printf("%g ", vec2[i]); } Cross(vec1, vec2, vec3); printf("\nCross of vec1 and vec2: "); for(i = 0; i < sizeof(vec3)/sizeof(int); i++) { printf("%g ", vec3[i]); } Magnitude(vec2); printf("\nMagnitude of vec2: "); printf("%g ", Magnitude(vec2)); Normalize(vec2); printf("\nNormalize of vec2: "); for(i = 0; i < sizeof(vec3)/sizeof(int); i++) { printf("%g ", vec2[i]); } }
int main() { LOG_DEBUG("Starting Game"); auto DeviceOGL = ACTK::Renderer::RenderDeviceManager::GetInstance().CreateDevice(ACTK::Renderer::API::OpenGL3x); if(DeviceOGL == nullptr) { return 0; } auto WindowOGL = DeviceOGL->VCreateWindow(800, 600, "HelloWorld", ACTK::Renderer::WindowType::Windowed); if(WindowOGL == nullptr) { return 0; } auto ShaderProgram = DeviceOGL->VCreateShaderProgram(LoadShader(IDS_VERTEXSHADER), LoadShader(IDS_FRAGMENTSHADER)); /////////////////////////////////////////////////////////////////// // ClearState and Color ACTK::Renderer::ClearState cornflowerBlue; cornflowerBlue.Color = ACTK::Renderer::Color(0.392f, 0.584f, 0.929f, 1.0f); /////////////////////////////////////////////////////////////////// // Vertex Array // Dreieck-Koordinaten, die ohne Kamera in dem Fenster zu sehen sein müssten float* vertices = new float[9]; // vertex array vertices[0] =-0.3f; vertices[1] = 0.5f; vertices[2] =-1.0f; vertices[3] =-0.8f; vertices[4] =-0.5f; vertices[5] =-1.0f; vertices[6] = 0.2f; vertices[7] =-0.5f; vertices[8]= -1.0f; // TODO: Buffer erstellen und mit Dreieckinformationen füllen /////////////////////////////////////////////////////////////////// // Uniforms float white[] = {1.0f, 1.0f, 1.0f}; ShaderProgram->VSetUniformVector("u_color", white, 3); /////////////////////////////////////////////////////////////////// // RenderState // TODO: RenderState // So ungefähr soll es aussehen // ACTK::RenderState renderState; // renderState.FacetCulling.Enabled = false; // renderState.DepthTest.Enabled = false; /////////////////////////////////////////////////////////////////// // Gameloop auto ContextOGL = WindowOGL->VGetContext(); MSG msg = { 0 }; LOG_DEBUG("Running Game"); while(!WindowOGL->VShouldClose()) { if(PeekMessage( &msg, NULL, 0, 0, PM_REMOVE )) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else { ContextOGL->VClear(cornflowerBlue); // TODO: Dreieck zeichnen mit dem Context // So ungefähr muss der Aufruf aussehen. Ändere dafür das Interface entsprechend und implementiere die Funktion in der DLL //ContextOGL->draw( PrimitiveType, Offset, Count, VertexArray, ShaderProgram, RenderState ); // PrimitiveType = Was soll gezeichnet werden? Dreieck, Linie, Punkte // Offset = Ab welchem Index Dreieck in dem VertexArray // Count = Wie viele Koordinaten nach dem Offset die gezeichnet werden müssen // VertexArray = Dreieckskoordinaten // Shader Program = Das ShaderProgramm (Vertex und Pixelshader) mit dem die Dreiecke gezeichnet werden sollen // RenderState = Die RenderState Einstellungen die für das Zeichnen dieses Dreiecks vorgenommen werden sollen // Das machen wir schrittweise: (Dreiecke mit GlBegin() und GLEnd() zeichnen; // 1. Schritt: ContextOGL->draw( VertexArray, ShaderProgram ); // alle dreiecke zeichnen // 2. Schritt: ContextOGL->draw( Offset, Count, VertexArray, ShaderProgram ); // nickt alle dreiecke zeichnen // 3. Schritt: ContextOGL->draw( PrimitiveType, Offset, Count, VertexArray, ShaderProgram ); // Dreieck als Linie oder Punkte zeichnen // 5. Schritt: ContextOGL->draw( PrimitiveType, Offset, Count, VertexArray, ShaderProgram, RenderState ); // RenderState einstellen // 6. Schritt: Das selbe mit Vertex Buffern ContextOGL->VDraw(ACTK::Renderer::PrimitiveType::LineLoop, vertices, ShaderProgram, 1); ContextOGL->VSwapBuffers(); } } LOG_DEBUG("Quitting Game"); return (int) msg.wParam; }