1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- //---------------------------------------------------------------------------
- #pragma hdrstop
- #include <vcl.h>
- #include <tchar.h>
- #include "Unit1.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma classgroup "Vcl.Controls.TControl"
- #pragma link "GLBaseClasses"
- #pragma link "GLCoordinates"
- #pragma link "GLCrossPlatform"
- #pragma link "GLFullScreenViewer"
- #pragma link "GLObjects"
- #pragma link "GLScene"
- #pragma link "GLTeapot"
- #pragma resource "*.dfm"
- TDataModule1 *DataModule1;
- //---------------------------------------------------------------------------
- __fastcall TDataModule1::TDataModule1(TComponent* Owner)
- : TDataModule(Owner)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TDataModule1::DataModuleCreate(TObject *Sender)
- {
- // Adjusts Zoom to size (might have been modified in the IDE, by you, user!)
- GLCamera1->SceneScale = GLFullScreenViewer1->Width/160;
- // Start fullscreen mode, no cursor
- GLFullScreenViewer1->Cursor = crNone;
- GLFullScreenViewer1->Active = true;
- while (GLFullScreenViewer1->Active)
- {
- // Message queue is not operational, but there may still be some messages
- Application->ProcessMessages();
- // Relinquish some of that CPU time
- Sleep(1);
- // Slowly rotate the teapot and the blue light
- Teapot1->TurnAngle = 4*Frac(24*(Now()))*3600;
- DCBlueLight->RollAngle = 32*Frac(24*(Now()))*3600;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TDataModule1::GLFullScreenViewer1PostRender(TObject *Sender)
- {
- TGLCanvas *glc;
- int x, y;
- glc = new TGLCanvas(GLFullScreenViewer1->Width, GLFullScreenViewer1->Height);
- // with glc do begin
- x = Mouse->CursorPos.X;
- y = Mouse->CursorPos.Y;
- glc->PenColor = clYellow;
- // Alpha-transparency antialiasing:
- // we render the ellipse twice, the first pass with a very transparent
- // wide pen, and a second time with a thinner pen.
- glc->PenAlpha = 0.4;
- glc->PenWidth = 3;
- glc->Ellipse(x, y, 16, 16);
- glc->PenAlpha = 0.75;
- glc->PenWidth = 2;
- glc->Ellipse(x, y, 16, 16);
- // Complete the reticle
- glc->PenAlpha = 0.3;
- glc->PenWidth = 2;
- glc->Line(x-32, y, x+32, y);
- glc->Line(x, y-32, x, y+32);
- glc->Free();
- }
- //---------------------------------------------------------------------------
- void __fastcall TDataModule1::GLFullScreenViewer1KeyPress(TObject *Sender, System::WideChar &Key)
- {
- // ESC leaves fullscreen mode
- if (Key = '\27') {
- GLFullScreenViewer1->Active = false;
- Key = '\0';
- }
- }
- //---------------------------------------------------------------------------
|