April 10, 2020, 07:23:22 AM

Author Topic: [bb] Bubbles Screensaver Example by _PJ_ [ 1+ years ago ]  (Read 1190 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Bubbles Screensaver Example by _PJ_ [ 1+ years ago ]
« on: June 29, 2017, 12:28:43 AM »
Title : Bubbles Screensaver Example
Author : _PJ_
Posted : 1+ years ago

Description : For those of us without Windows 7 (Possibly Vista too?) Here's a chance to get a version of the "Bubbles" screensaver!
This version, however, is 3D and makes use of a few tricks of Blitz3D to render the scene of the desktop plus the bubbles all as real 3D objects. No '2D images', no Sprites and no external media!
Unfortunately, the size is quite large (a B3D compilation problem mainly) and it takes a while to 'kick in' (You may have to wait around 30 seconds).
Also, due to some other B3D limitations, it didn't work in Full-screen mode, nor will B3D render in borderless windows. As such, the program runs in a standard, non-scalable window.

Last of all, for anyone who wishes to use this as a screensaver, remember to change the extension to ".scr" on compilation. When installing, note that 'preview', 'configure'/'settings' or just selecting the screensaver can cause it to run. Use Taskmanager - Process to remove any instances of the screensaver if this happens, else it might slow down a lot.

---- ---- ---- ---- ---- ---- ---- ---- ----

The code contains some interesting features, which may be of great help. First of all, note the DLL decls as described in the first 'NOTES' comments.
These are used to obtain the screen dimensions, and also, to copy the desktop screen as a buffer.

This buffer is then applied as a standard, square texture and painted onto a square quadrilateral mesh. The mesh is then resized up to the correct dimensions, which, although results in very slight loss of detail, I'm sure you will agree it's quite accurate. The reason for the resizing is to ensure maximum compatibility (square textures), and to prevent issues of a null-painted border around the edges.

This Quad is then placed back from the camera just enough to display in full, equivalent to the desktop image. It is given the EntityOrder maxim to ensure the bubbles can then be drawn behind it, in 3D space, whilst appearing in-front. The quad is also setto EntityFX 1 (Full Bright) so it should appear in "true-colour"

These bubbles are generated with their own light sources, and set to be semi-transparent. They are kept at the same distance from the camera, but free to move in the X and Y dimensions. Simplified collision detection is used with some very basic code to simulate the 2D 'bouncing' equivalent to the original Windows 7 screensaver.

Finally, the bubbles also have the colour cycling feature. Basically a target colour is defined at random for each bubble, and the buibbles' initial colours are also randoimised. Gradually, the bubbles change colours towards their target, upopin reaching the target, a new target is randomised and so on.
---- ---- ---- ---- ---- ---- ----
I'd be very happy to hear of any feedback and criticism including compatibility issues or especially any instances of failure not covered above.

----------------------------------
Addendum

Much of the code has been deprecated for trial purposes or due to faults.
You're welcome to uncomment the 'offending' lines if you wish to try out alternative features, but I can't promise reliable results!


Code :
Code: BlitzBasic
  1. AppTitle "EKD - 3D Bubbles Screensaver"
  2.  
  3.  
  4. ;       NOTES_____________________________________________________________________________________________________________
  5.  
  6. ; 3D Bubbles Screensaver
  7. ; Based on Microsoft "Bubbles" Screensaver
  8. ; Written by PJ using Blitz3D
  9. ; Fully 3D
  10.  
  11.  
  12. ; Utilises Windows API Calls:
  13.  
  14. ;       .lib "user32.dll"
  15.  
  16. ;       user32_GetSystemMetrics% (nIndex%) : "GetSystemMetrics"
  17. ;       user32_GetDC% (hwnd%) : "GetDC"
  18. ;       user32_ReleaseDC% (hwnd%, hdc%) : "ReleaseDC"
  19. ;       user32_ShowWindow% (hwnd%, nCmdShow%) : "ShowWindow"
  20. ;       user32_GetFocus%() : "GetFocus"
  21.  
  22. ;       .lib "gdi32.dll"
  23. ;       gdi32_GetPixel% (hdc%, x%, y%) : "GetPixel"
  24.  
  25. ;       STATICS & CONSTANT DEFINITION AND DECLARATION;____________________________________________________________________
  26.  
  27. Const MAX_BUBBLES%=16
  28. Const BUBBLE_RADIUS#=1.0
  29. Const BUBBLE_SPEED#=0.025
  30.  
  31. Const BOUNDARY_X_MIN#=-8
  32. Const BOUNDARY_X_MAX#=8
  33. Const BOUNDARY_Y_MIN#=-6
  34. Const BOUNDARY_Y_MAX#=6
  35. Const BUBBLE_LOC#=7.5
  36.  
  37. Global GW%,GH%
  38. Global OverlaySprite
  39. Global Sun%
  40. Global Cam
  41. Global Quad%
  42.  
  43. Global hWnd%=SystemProperty("AppHWND")
  44.  
  45. Global ExitCondition=False
  46.  
  47. Global MX=MouseX()
  48. Global MY=MouseY()
  49. Global MZ=MouseZ()
  50.  
  51. Type Bubble
  52.         Field Entity
  53.         Field CR,CG,CB
  54.         Field TR,TG,TB
  55.         Field DX#
  56.         Field DY#
  57.         Field Light
  58. End Type
  59.  
  60. ;RUNTIME;____________________________________________________________________________________________________________
  61.  
  62. main
  63.  
  64. ;METHODS_____________________________________________________________________________________________________________
  65.  
  66. ;       SYSTEM
  67.        
  68. Function main()
  69.         ;Initialise
  70.         Initialise
  71.        
  72.         ; Reset Key state
  73.        
  74.         FlushMouse()
  75.         FlushKeys()
  76.        
  77.         MX=MouseX()
  78.         MY=MouseY()
  79.         MZ=MouseZ()
  80.         ;Required to clear Mouse_*_Speed() values
  81.         MoveMouse MouseX(),MouseY();GW*0.5,GH*0.5
  82.        
  83.         ; Invoke Main Loop
  84.         While Not (ExitCondition)
  85.                 Loop
  86.         Wend
  87.        
  88.        
  89.         ; Closedown
  90.         ; Free Resources
  91.         Local ALLBUBBLES.Bubble
  92.         For ALLBUBBLES.Bubble=Each Bubble
  93.                 FreeEntity ALLBUBBLESEntity
  94.                 Delete ALLBUBBLES
  95.         Next
  96.        
  97.         ClearWorld True,True,True
  98.         EndGraphics
  99.         End
  100. End Function
  101.  
  102. Function Initialise()
  103.         GW%=user32_GetSystemMetrics(16)
  104.         GH%=user32_GetSystemMetrics(17)
  105.        
  106.         Graphics3D GW,GH,32,2
  107.         SetBuffer BackBuffer()
  108.        
  109.         SeedRnd MilliSecs()
  110.        
  111.         AmbientLight 128,128,128
  112.        
  113.         Cam=CreateCamera()
  114.         CameraRange Cam,0.1,10.0
  115.         MoveEntity Cam,0,0,-0.5
  116.         Quad=CreateDesktopQuad(1,Float((Float(GH)/Float(GW))),Cam)
  117.         ;Sun%=CreateLight(1)
  118.         ;LightColor Sun,192,192,192
  119.         CreateBubbles()
  120. End Function
  121.  
  122. Function Loop()
  123.                
  124.         UpdateBubbles()
  125.        
  126.         UpdateWorld
  127.         RenderWorld
  128.        
  129.         ExitCondition =(((GetKey()) Or (KeyDown(1)) Or (GetMouse())) Or (MouseXSpeed()+MouseYSpeed()+MouseZSpeed()) Or (user32_GetFocus()<>hWnd) Or (MouseX()<>MX)Or (MouseY()<>MY)Or (MouseZ()<>MZ))
  130.        
  131.         CollisionCheck()
  132.  
  133.         Delay 10
  134.         Flip False
  135.        
  136. End Function   
  137.  
  138. ;       MAINTENANCE
  139.  
  140. Function UpdateBubbles()
  141.         Local UB.Bubble
  142.         For UB.Bubble =Each Bubble
  143.                 UpdateColour(UB.Bubble)
  144.                 TranslateEntity UBEntity,UBDX*BUBBLE_SPEED,UBDY*BUBBLE_SPEED,0
  145.         Next
  146. End Function
  147.  
  148. ;       GENERATION
  149.  
  150. Function CreateBubbles()
  151.         ;OverlaySprite=CreateOverlay()
  152.        
  153.         Local IterBubbles%
  154.        
  155.         Local Bub.Bubble
  156.         Local Sprite
  157.        
  158.         For IterBubbles=0 To MAX_BUBBLES-1
  159.                
  160.                 Bub.Bubble=New Bubble
  161.                
  162.                 BubEntity=CreateSphere(25)
  163.                
  164.                 ;Sprite=CopyEntity(OverlaySprite)
  165.                
  166.                 BubCR=(Rand(0,224)+32)
  167.                 BubCG=(Rand(0,224)+32)
  168.                 BubCB=(Rand(0,224)+32)
  169.                 BubTR=Rand(224)+32
  170.                 BubTG=Rand(224)+32
  171.                 BubTB=Rand(224)+32
  172.                 BubDX=Rnd(0.0-1.0,1.0)
  173.                 BubDY=Rnd(0.0-1.0,1.0)
  174.                 EntityType BubEntity,1
  175.                
  176.                 ScaleMesh BubEntity,BUBBLE_RADIUS,BUBBLE_RADIUS,BUBBLE_RADIUS
  177.                 EntityRadius BubEntity,BUBBLE_RADIUS
  178.                 BubLight=CreateLight(2)
  179.                 PositionEntity BubLight,-25,25,0,True
  180.                 LightConeAngles BubLight,0,5
  181.                 LightColor BubLight,255,255,255
  182.                 LightRange BubLight,5
  183.                 PositionEntity BubEntity,Rand(0-IterBubbles,IterBubbles),Rand(0-(IterBubbles Shr 1),IterBubbles Shr 1),BUBBLE_LOC,True
  184.                 PointEntity BubLight,BubEntity
  185.                 EntityParent BubLight,BubEntity
  186.                 EntityAlpha BubEntity,0.5
  187.                
  188.                 ;PositionEntity Sprite,EntityX(BubEntity,True),EntityY(BubEntity,True),EntityZ(BubEntity,True)-1,True
  189.                
  190.                 ;EntityParent Sprite,BubEntity
  191.                
  192.                 EntityShininess BubEntity,0.75
  193.                 EntityColor BubEntity,BubCR,BubCG,BubCB
  194.                
  195.         Next
  196.        
  197.         UpdateWorld
  198.         Collisions 1,1,1,1
  199. End Function   
  200.  
  201. Function CreateDesktopQuad(W#=1,H#=1,Parent%=0)
  202.        
  203.         ;Initialise
  204.        
  205.         Local HWnd%=SystemProperty("AppHWND")
  206.         Local X%
  207.         Local Y%
  208.         Local bByte%
  209.         user32_ShowWindow(HWnd,0)
  210.        
  211.         ; Build Quad Mesh
  212.         Local Mesh%=CreateQuad(W,H,Parent)
  213.        
  214.         ; Read Desktop Image
  215.        
  216.         Local Desktop_DC%=user32_GetDC(0)
  217.         Local Image%=CreateImage(GW,GH)
  218.         Local Buffer%=ImageBuffer(Image)
  219.        
  220.         LockBuffer Buffer
  221.        
  222.         For Y=0 To GH-1
  223.                 For X=0 To GW-1
  224.                         bByte=gdi32_GetPixel(Desktop_DC,X,Y)
  225.                         bByte=ConvertaBRGToaRGB(bByte)
  226.                         WritePixelFast X,Y,bByte,Buffer
  227.                 Next
  228.         Next
  229.        
  230.         user32_ReleaseDC(0,Desktop_DC)
  231.        
  232.         UnlockBuffer Buffer
  233.        
  234.         ; Apply Scaled Texture From Image
  235.         Local Texture%=CreateTexture(GW,GH)
  236.         Local TW=TextureWidth(Texture)
  237.         Local TH=TextureHeight(Texture)
  238.         Local TxBuffer%=TextureBuffer(Texture)
  239.         ResizeImage Image,TW,TH
  240.         Buffer=ImageBuffer(Image)
  241.        
  242.         LockBuffer Buffer
  243.         LockBuffer TxBuffer
  244.         For X=0 To TW-1
  245.                 For Y=0 To TH-1
  246.                         CopyPixelFast TW-(X+1),Y,Buffer,X,Y,TxBuffer
  247.                 Next
  248.         Next
  249.        
  250.         EntityTexture Mesh,Texture
  251.        
  252.         UnlockBuffer Buffer
  253.         UnlockBuffer TxBuffer
  254.        
  255.         ;Fix Memory Leaks
  256.         FreeImage Image
  257.        
  258.         FreeTexture Texture
  259.        
  260.         ;Display Window
  261.         user32_ShowWindow(HWnd,5)
  262.        
  263.         ; Return Final Mesh
  264.         EntityFX Mesh,1
  265.         EntityOrder Mesh,MAX_BUBBLES+1
  266.         Return Mesh
  267. End Function
  268.  
  269. Function CreateQuad(Width#,Height#,Parent%=0)
  270.         Local Mesh%=CreateMesh()
  271.         Local Surface%=CreateSurface(Mesh)
  272.        
  273.         Local v0%=AddVertex(Surface,-1,1,0,1,0)
  274.         Local v1%=AddVertex(Surface,1,1,0,0,0)
  275.         Local v2%=AddVertex(Surface,-1,-1,0,1,1)
  276.         Local v3%=AddVertex(Surface,1,-1,0,0,1)
  277.        
  278.         VertexColor Surface,v0,255,255,255
  279.         VertexColor Surface,v1,255,255,255
  280.         VertexColor Surface,v2,255,255,255
  281.         VertexColor Surface,v3,255,255,255
  282.        
  283.         AddTriangle(Surface,0,1,2)
  284.         AddTriangle(Surface,3,2,1)
  285.        
  286.         ScaleMesh Mesh,0.5*Width,0.5*Height,0.1
  287.         If (Parent) Then EntityParent Mesh,Parent
  288.         Return Mesh
  289. End Function
  290.  
  291. Function CreateOverlay()        ; DEPRECATED
  292. ;       Local X,Y,Byte
  293. ;       Restore Overlay
  294. ;       Local Sprite=CreateQuad(BUBBLE_RADIUS Shr 1,BUBBLE_RADIUS Shr 1)
  295. ;       Local Texture=CreateTexture(64,64,771)
  296. ;       Local Buffer=TextureBuffer(Texture)
  297. ;       LockBuffer Buffer
  298. ;       For X= 0 To 63
  299. ;               For Y=0 To 63
  300. ;                       Read Byte
  301. ;                       Byte=ConvertToRGB(Byte,Byte,Byte)
  302. ;                       WritePixelFast X,Y,Byte,Buffer
  303. ;               Next
  304. ;       Next
  305. ;       UnlockBuffer Buffer
  306. ;       EntityTexture Sprite,Texture
  307. ;       FreeTexture Texture
  308. ;       Return Sprite
  309. End Function
  310.  
  311.  
  312. ;       COLLISION DETECTION
  313.  
  314.  
  315. Function CollisionCheck()
  316.         ; Simple 2D collision trig
  317.         Local CollBub.Bubble
  318.         Local BounceBubble
  319.         For CollBub.Bubble=Each Bubble
  320.                 BounceBubble=EntityCollided(CollBubEntity,1)
  321.                 If (BounceBubble)
  322.                         CollBubDX=CollBubDX-DifferenceX(CollBubEntity,BounceBubble)
  323.                         CollBubDY=CollBubDY-DifferenceY(CollBubEntity,BounceBubble)
  324.                 Else
  325.                         If CheckBoundsX(CollBubEntity,BOUNDARY_X_MIN,BOUNDARY_X_MAX) Then CollBubDX=0-CollBubDX
  326.                         If CheckBoundsY(CollBubEntity,BOUNDARY_Y_MIN,BOUNDARY_Y_MAX) Then CollBubDY=0-CollBubDY
  327.                 End If
  328.         Next           
  329. End Function
  330.  
  331. Function CheckBoundsX(Entity,Min,Max)
  332.         Return ((EntityX(Entity,True)<Min)Or (EntityX(Entity,True)>Max))
  333. End Function
  334.  
  335. Function CheckBoundsY(Entity,Min,Max)
  336.         Return ((EntityY(Entity,True)<Min) Or (EntityY(Entity,True)>Max))
  337. End Function
  338.  
  339. Function DifferenceX#(Source,Target)
  340.         Return (EntityX(Target,True)-EntityX(Source,True))
  341. End Function
  342.  
  343. Function DifferenceY#(Source,Target)
  344.         Return (EntityY(Target,True)-EntityY(Source,True))
  345. End Function
  346.  
  347. ;       BUBBLE COLOURS
  348.  
  349. Function UpdateColour(BC.Bubble)
  350.         Local R1=BCCR
  351.         Local G1=BCCG
  352.         Local B1=BCCB
  353.         Local R2=BCTR
  354.         Local G2=BCTG
  355.         Local B2=BCTB
  356.         Local DR=Sgn(R2-R1)
  357.         Local DG=Sgn(G2-G1)
  358.         Local DB=Sgn(B2-B1)
  359.        
  360.         BCCR=R1+DR
  361.         BCCG=G1+DG
  362.         BCCB=B1+DB
  363.        
  364.         If (Not(DR*DG*DB))
  365.                 BCTR=Rand(0,224)+32
  366.                 BCTG=Rand(0,224)+32
  367.                 BCTB=Rand(0,224)+32
  368.         End If
  369.        
  370.         EntityColor BCEntity,BCCR,BCCG,BCCB
  371. End Function
  372.  
  373. Function Red(RGB)              
  374.         Return RGB And 255
  375. End Function
  376.  
  377. Function Green(RGB)
  378.         Return (RGB Shr 8) And 255
  379. End Function
  380.  
  381. Function Blue(RGB)
  382.         Return (RGB Shr 16) And 255
  383. End Function
  384.  
  385. Function ConvertaBRGToaRGB(aRGB)
  386.         Local R=(aRGB Shr 16)And 255
  387.         Local G=(aRGB Shr 8)And 255
  388.         Local B=(aRGB Shr 0)And 255
  389.         Local a=(aRGB Shr 24)And 255
  390.         Return R+(G Shl 8)+(B Shl 16)+a Shl 24
  391. End Function
  392.  
  393. Function ConvertToRGB(R,G,B)
  394.         Return R+(G Shl 8)+(B Shl 16)
  395. End Function
  396.  
  397. ;       DATA (DEPRECATED);_____________________________________________________________________________________________________________
  398.  
  399. .Overlay
  400. ;Data 0,0,0,0,0,1,1,1
  401. ;Data 1,1,1,1,2,2,2,2
  402. ;Data 2,2,2,2,3,3,3,3
  403. ;Data 39,87,86,85,145,229,229,229
  404. ;Data 229,229,230,145,85,86,86,39
  405. ;Data 3,3,3,3,3,2,2,2
  406. ;Data 2,2,2,2,2,1,1,1
  407. ;Data 1,1,1,1,0,0,0,0
  408. ;Data 0,0,0,0,1,1,1,1
  409. ;Data 1,1,1,2,2,2,2,2
  410. ;Data 2,2,3,3,21,23,94,152
  411. ;Data 184,209,202,197,202,211,214,213
  412. ;Data 213,214,211,202,197,201,206,181
  413. ;Data 151,94,23,21,3,3,3,2
  414. ;Data 2,2,2,2,2,2,1,1
  415. ;Data 1,1,1,1,1,0,0,0
  416. ;Data 0,0,0,1,1,1,1,1
  417. ;Data 1,2,2,2,2,2,2,2
  418. ;Data 3,3,45,115,201,189,197,200
  419. ;Data 202,206,206,204,203,203,202,202
  420. ;Data 202,202,202,202,203,204,205,200
  421. ;Data 197,196,185,197,115,45,3,3
  422. ;Data 3,2,2,2,2,2,2,2
  423. ;Data 1,1,1,1,1,1,0,0
  424. ;Data 0,0,1,1,1,1,1,1
  425. ;Data 2,2,2,2,2,2,3,3
  426. ;Data 7,59,192,209,206,203,203,202
  427. ;Data 200,198,196,195,193,192,190,190
  428. ;Data 190,190,191,192,194,196,198,199
  429. ;Data 201,201,201,203,205,188,59,7
  430. ;Data 3,3,3,2,2,2,2,2
  431. ;Data 2,1,1,1,1,1,1,0
  432. ;Data 0,1,1,1,1,1,1,2
  433. ;Data 2,2,2,2,2,3,5,62
  434. ;Data 150,186,199,206,203,199,196,192
  435. ;Data 188,183,179,175,171,168,165,163
  436. ;Data 162,164,167,170,174,177,182,187
  437. ;Data 192,195,198,201,203,197,181,145
  438. ;Data 62,5,3,3,2,2,2,2
  439. ;Data 2,2,1,1,1,1,1,1
  440. ;Data 1,1,1,1,1,1,2,2
  441. ;Data 2,2,2,3,3,61,145,200
  442. ;Data 198,200,201,198,193,186,179,171
  443. ;Data 160,151,143,137,132,129,125,123
  444. ;Data 122,124,127,130,135,139,147,156
  445. ;Data 167,176,184,192,197,199,197,195
  446. ;Data 197,145,61,3,3,3,2,2
  447. ;Data 2,2,2,1,1,1,1,1
  448. ;Data 1,1,1,1,1,2,2,2
  449. ;Data 2,2,3,3,61,192,203,203
  450. ;Data 201,197,192,185,174,160,146,132
  451. ;Data 119,108,99,92,87,84,81,79
  452. ;Data 78,79,82,85,88,93,102,112
  453. ;Data 124,138,153,169,181,190,195,199
  454. ;Data 199,198,187,61,3,3,3,2
  455. ;Data 2,2,2,2,1,1,1,1
  456. ;Data 1,1,1,1,2,2,2,2
  457. ;Data 2,3,3,60,183,199,203,199
  458. ;Data 193,186,175,159,142,122,104,89
  459. ;Data 75,65,57,51,48,46,44,43
  460. ;Data 42,43,45,47,49,53,60,68
  461. ;Data 80,93,111,130,149,168,182,191
  462. ;Data 196,199,196,176,60,3,3,3
  463. ;Data 2,2,2,2,2,1,1,1
  464. ;Data 1,1,1,2,2,2,2,2
  465. ;Data 3,18,154,186,196,201,196,189
  466. ;Data 179,164,145,124,103,82,64,51
  467. ;Data 41,34,29,25,23,22,21,21
  468. ;Data 20,21,22,23,24,27,30,36
  469. ;Data 44,55,69,88,110,133,154,173
  470. ;Data 186,194,197,191,181,153,18,3
  471. ;Data 3,2,2,2,2,2,1,1
  472. ;Data 1,1,2,2,2,2,2,3
  473. ;Data 26,165,204,201,199,193,185,172
  474. ;Data 154,133,110,87,66,48,35,26
  475. ;Data 20,16,14,12,11,11,11,11
  476. ;Data 10,11,11,11,12,13,14,18
  477. ;Data 22,29,39,52,71,93,117,141
  478. ;Data 164,180,191,196,196,201,162,26
  479. ;Data 3,3,2,2,2,2,2,1
  480. ;Data 1,1,2,2,2,2,3,5
  481. ;Data 154,205,204,199,192,182,166,147
  482. ;Data 123,100,77,57,39,27,19,13
  483. ;Data 11,9,8,8,8,8,8,8
  484. ;Data 8,8,8,8,8,8,8,10
  485. ;Data 11,14,20,28,41,58,79,103
  486. ;Data 129,154,175,189,195,199,200,150
  487. ;Data 5,3,3,2,2,2,2,1
  488. ;Data 1,2,2,2,2,3,3,56
  489. ;Data 187,202,200,192,180,162,140,116
  490. ;Data 90,68,48,33,23,16,12,9
  491. ;Data 8,7,7,7,7,7,7,7
  492. ;Data 7,7,7,7,7,7,7,7
  493. ;Data 8,9,11,15,22,32,47,67
  494. ;Data 92,119,146,171,186,195,196,181
  495. ;Data 57,3,3,3,2,2,2,2
  496. ;Data 2,2,2,2,2,3,62,185
  497. ;Data 197,200,192,181,162,136,108,82
  498. ;Data 59,44,40,38,30,19,11,9
  499. ;Data 8,7,7,7,7,7,7,7
  500. ;Data 7,7,7,7,7,7,7,7
  501. ;Data 7,7,8,9,12,17,26,39
  502. ;Data 59,84,113,143,170,187,195,190
  503. ;Data 177,62,3,3,2,2,2,2
  504. ;Data 2,2,2,2,3,57,188,200
  505. ;Data 200,195,183,165,138,107,77,53
  506. ;Data 46,68,109,129,118,75,31,11
  507. ;Data 9,8,7,8,8,8,8,8
  508. ;Data 8,8,8,8,8,8,7,7
  509. ;Data 7,7,7,7,8,10,14,21
  510. ;Data 35,54,81,113,146,173,189,197
  511. ;Data 194,180,58,3,3,2,2,2
  512. ;Data 2,2,2,3,11,152,202,204
  513. ;Data 195,186,169,143,112,78,51,38
  514. ;Data 81,175,239,253,251,206,107,31
  515. ;Data 11,10,9,8,8,8,8,8
  516. ;Data 8,8,8,8,8,8,8,8
  517. ;Data 8,7,7,7,7,8,9,12
  518. ;Data 20,32,54,84,119,151,177,192
  519. ;Data 198,196,147,12,3,3,2,2
  520. ;Data 2,2,2,3,56,196,204,199
  521. ;Data 189,174,149,118,84,55,33,48
  522. ;Data 166,242,255,255,255,255,206,75
  523. ;Data 18,10,10,9,8,8,8,8
  524. ;Data 8,8,8,8,8,8,8,8
  525. ;Data 8,8,8,7,7,7,7,9
  526. ;Data 12,20,35,59,91,125,158,182
  527. ;Data 194,196,188,56,3,3,2,2
  528. ;Data 2,2,3,24,153,198,202,193
  529. ;Data 179,156,126,91,61,37,23,73
  530. ;Data 216,253,255,255,255,255,251,117
  531. ;Data 27,10,10,10,9,9,9,9
  532. ;Data 9,9,9,9,9,9,8,8
  533. ;Data 8,8,8,8,7,7,7,7
  534. ;Data 9,13,22,39,65,98,133,166
  535. ;Data 187,196,192,146,24,3,3,2
  536. ;Data 2,2,3,126,202,204,197,185
  537. ;Data 167,137,101,68,41,23,17,79
  538. ;Data 221,254,255,255,255,255,253,127
  539. ;Data 30,11,11,11,10,9,9,9
  540. ;Data 9,9,9,9,9,9,9,9
  541. ;Data 9,8,8,8,8,7,7,7
  542. ;Data 7,9,14,24,43,72,108,145
  543. ;Data 175,192,198,197,123,3,3,2
  544. ;Data 2,3,41,192,205,203,192,176
  545. ;Data 150,116,78,48,28,16,11,58
  546. ;Data 201,250,255,255,255,255,239,105
  547. ;Data 23,11,11,11,10,9,9,9
  548. ;Data 9,9,9,9,9,9,9,9
  549. ;Data 9,9,8,8,8,8,7,7
  550. ;Data 7,8,10,15,28,51,85,124
  551. ;Data 160,185,198,199,184,41,3,3
  552. ;Data 2,7,121,207,206,198,184,164
  553. ;Data 133,95,59,34,19,13,9,27
  554. ;Data 132,222,250,254,253,243,173,58
  555. ;Data 15,11,11,12,11,10,10,10
  556. ;Data 10,10,10,10,10,10,9,9
  557. ;Data 9,9,9,8,8,8,8,7
  558. ;Data 7,7,8,11,19,36,65,103
  559. ;Data 142,174,193,201,201,119,8,3
  560. ;Data 3,22,200,207,204,192,175,150
  561. ;Data 115,77,45,24,14,10,9,12
  562. ;Data 44,131,201,220,217,164,72,22
  563. ;Data 11,13,13,13,11,10,10,10
  564. ;Data 10,10,10,10,10,10,10,10
  565. ;Data 9,9,9,9,9,8,8,8
  566. ;Data 7,7,7,8,13,25,49,84
  567. ;Data 124,160,186,199,200,197,22,3
  568. ;Data 3,14,187,205,200,186,164,134
  569. ;Data 97,61,33,19,11,9,9,9
  570. ;Data 12,28,60,79,70,40,18,11
  571. ;Data 13,13,13,13,11,10,10,10
  572. ;Data 10,10,10,10,10,10,10,10
  573. ;Data 10,9,9,9,9,8,8,8
  574. ;Data 8,7,7,7,10,18,36,66
  575. ;Data 105,144,176,194,198,178,14,3
  576. ;Data 3,95,191,204,194,178,151,116
  577. ;Data 80,47,26,14,10,9,9,10
  578. ;Data 10,10,11,14,13,11,11,13
  579. ;Data 13,13,13,12,12,11,11,11
  580. ;Data 11,11,11,11,11,10,10,10
  581. ;Data 10,10,9,9,9,9,8,8
  582. ;Data 8,8,7,7,8,13,26,50
  583. ;Data 87,127,164,188,196,180,92,3
  584. ;Data 3,155,199,203,190,170,138,100
  585. ;Data 65,37,20,11,9,9,9,10
  586. ;Data 10,10,11,11,11,11,13,13
  587. ;Data 13,13,14,13,12,11,11,11
  588. ;Data 11,11,11,11,11,11,11,10
  589. ;Data 10,10,10,9,9,9,9,8
  590. ;Data 8,8,7,7,8,11,19,38
  591. ;Data 71,112,152,182,197,191,145,3
  592. ;Data 46,180,203,201,185,160,124,85
  593. ;Data 52,29,15,10,9,9,10,10
  594. ;Data 10,11,11,11,11,13,13,13
  595. ;Data 13,14,14,13,12,11,11,11
  596. ;Data 11,11,11,11,11,11,11,11
  597. ;Data 10,10,10,10,9,9,9,9
  598. ;Data 8,8,8,7,7,9,15,30
  599. ;Data 58,97,140,174,194,196,172,46
  600. ;Data 92,208,207,197,179,151,111,71
  601. ;Data 40,22,13,9,9,9,10,10
  602. ;Data 10,11,11,11,13,13,13,13
  603. ;Data 14,14,14,12,11,11,12,12
  604. ;Data 12,12,12,11,11,11,11,11
  605. ;Data 11,10,10,10,10,9,9,9
  606. ;Data 8,8,8,7,7,8,12,23
  607. ;Data 47,84,127,164,190,201,202,93
  608. ;Data 86,203,206,194,174,142,100,59
  609. ;Data 31,18,11,9,9,9,10,10
  610. ;Data 10,11,11,11,13,13,13,14
  611. ;Data 14,14,13,12,12,12,12,12
  612. ;Data 12,12,12,12,12,11,11,11
  613. ;Data 11,11,10,10,10,9,9,9
  614. ;Data 8,8,8,7,7,7,10,19
  615. ;Data 39,73,116,156,185,200,197,85
  616. ;Data 74,198,205,192,170,136,92,52
  617. ;Data 26,13,10,9,9,10,10,10
  618. ;Data 11,11,11,13,13,13,13,14
  619. ;Data 14,13,12,12,12,12,12,12
  620. ;Data 12,12,12,12,12,12,11,11
  621. ;Data 11,11,10,10,10,10,9,9
  622. ;Data 9,8,8,8,7,7,9,16
  623. ;Data 33,64,106,149,182,198,191,72
  624. ;Data 145,202,204,190,167,132,87,48
  625. ;Data 23,11,9,9,9,10,10,10
  626. ;Data 11,11,11,13,13,13,14,14
  627. ;Data 13,12,12,12,12,12,12,12
  628. ;Data 12,12,12,12,12,12,12,11
  629. ;Data 11,11,11,10,10,10,9,9
  630. ;Data 9,8,8,8,7,7,8,14
  631. ;Data 29,58,100,145,179,197,196,142
  632. ;Data 229,213,204,189,166,129,84,46
  633. ;Data 22,11,8,8,8,10,10,10
  634. ;Data 11,11,11,13,13,13,14,13
  635. ;Data 12,11,12,12,12,12,12,12
  636. ;Data 12,12,12,12,12,12,12,11
  637. ;Data 11,11,11,10,10,10,9,9
  638. ;Data 9,8,8,8,7,7,8,13
  639. ;Data 28,56,97,142,177,198,206,226
  640. ;Data 229,217,204,189,164,126,82,44
  641. ;Data 21,11,8,7,7,9,9,10
  642. ;Data 11,11,11,12,12,12,12,11
  643. ;Data 11,12,12,12,12,12,13,13
  644. ;Data 13,13,13,12,12,12,12,12
  645. ;Data 11,11,11,10,10,10,9,9
  646. ;Data 9,8,8,8,7,7,8,13
  647. ;Data 27,55,96,141,176,197,210,226
  648. ;Data 229,216,202,187,162,124,80,43
  649. ;Data 21,11,8,7,7,8,8,8
  650. ;Data 10,10,10,11,11,10,11,11
  651. ;Data 11,12,12,12,12,12,13,13
  652. ;Data 13,13,13,12,12,12,12,12
  653. ;Data 11,11,11,10,10,10,9,9
  654. ;Data 9,8,8,8,7,7,8,13
  655. ;Data 27,55,96,141,176,196,210,226
  656. ;Data 229,216,202,187,161,123,79,43
  657. ;Data 20,10,8,7,7,8,8,8
  658. ;Data 9,9,9,10,10,10,11,11
  659. ;Data 11,12,12,12,12,12,13,13
  660. ;Data 13,13,13,12,12,12,12,12
  661. ;Data 11,11,11,10,10,10,9,9
  662. ;Data 9,8,8,8,7,7,8,13
  663. ;Data 27,55,96,141,175,196,210,226
  664. ;Data 229,216,203,187,162,124,80,43
  665. ;Data 21,11,8,7,7,8,8,8
  666. ;Data 9,9,9,10,10,10,11,11
  667. ;Data 11,12,12,12,12,12,13,13
  668. ;Data 13,13,13,12,12,12,12,12
  669. ;Data 11,11,11,10,10,10,9,9
  670. ;Data 9,8,8,8,7,7,8,13
  671. ;Data 27,55,96,141,176,196,210,226
  672. ;Data 229,213,203,189,165,127,82,44
  673. ;Data 21,11,8,7,7,8,8,8
  674. ;Data 9,9,9,10,10,10,11,11
  675. ;Data 11,12,12,12,12,12,13,13
  676. ;Data 13,13,13,12,12,12,12,12
  677. ;Data 11,11,11,10,10,10,9,9
  678. ;Data 9,8,8,8,7,7,8,13
  679. ;Data 27,55,96,141,176,197,206,226
  680. ;Data 145,204,203,189,166,129,85,46
  681. ;Data 22,11,8,7,7,8,8,8
  682. ;Data 9,9,9,10,10,10,11,11
  683. ;Data 11,11,12,12,12,12,12,12
  684. ;Data 12,12,12,12,12,12,12,11
  685. ;Data 11,11,11,10,10,10,9,9
  686. ;Data 9,8,8,8,7,7,8,13
  687. ;Data 28,56,98,142,177,197,198,139
  688. ;Data 75,202,204,190,168,132,88,49
  689. ;Data 24,11,8,7,7,8,8,8
  690. ;Data 9,9,9,10,10,10,11,11
  691. ;Data 11,11,12,12,12,12,12,12
  692. ;Data 12,12,12,12,12,12,12,11
  693. ;Data 11,11,11,10,10,10,9,9
  694. ;Data 9,8,8,8,7,7,8,14
  695. ;Data 30,59,101,145,179,198,194,72
  696. ;Data 86,209,206,192,171,137,94,54
  697. ;Data 27,13,8,7,7,8,8,8
  698. ;Data 9,9,9,10,10,10,10,11
  699. ;Data 11,11,11,12,12,12,12,12
  700. ;Data 12,12,12,12,12,12,11,11
  701. ;Data 11,11,10,10,10,10,9,9
  702. ;Data 9,8,8,8,7,7,9,17
  703. ;Data 34,66,108,150,182,200,201,82
  704. ;Data 92,216,207,195,175,144,103,62
  705. ;Data 32,15,9,7,7,7,8,8
  706. ;Data 8,9,9,9,10,10,10,11
  707. ;Data 11,11,11,11,12,12,12,12
  708. ;Data 12,12,12,12,12,11,11,11
  709. ;Data 11,11,10,10,10,9,9,9
  710. ;Data 8,8,8,7,7,8,10,20
  711. ;Data 41,76,119,158,186,200,209,93
  712. ;Data 46,185,204,198,180,153,115,73
  713. ;Data 40,20,10,7,7,7,8,8
  714. ;Data 8,9,9,9,10,10,10,10
  715. ;Data 11,11,11,11,11,11,12,12
  716. ;Data 12,12,12,11,11,11,11,11
  717. ;Data 11,10,10,10,10,9,9,9
  718. ;Data 8,8,8,7,7,8,12,25
  719. ;Data 50,88,131,166,190,197,172,46
  720. ;Data 3,155,203,201,187,163,128,87
  721. ;Data 50,26,13,8,7,7,8,8
  722. ;Data 8,9,9,9,9,10,10,10
  723. ;Data 10,11,11,11,11,11,11,11
  724. ;Data 11,11,11,11,11,11,11,11
  725. ;Data 10,10,10,10,9,9,9,9
  726. ;Data 8,8,8,7,7,9,16,32
  727. ;Data 61,102,143,175,194,196,146,3
  728. ;Data 3,95,198,203,192,172,142,102
  729. ;Data 63,34,17,10,7,7,7,8
  730. ;Data 8,8,9,9,9,9,10,10
  731. ;Data 10,10,11,11,11,11,11,11
  732. ;Data 11,11,11,11,11,11,11,10
  733. ;Data 10,10,10,9,9,9,9,8
  734. ;Data 8,8,7,7,8,11,21,41
  735. ;Data 75,116,154,183,195,186,92,3
  736. ;Data 3,15,194,205,196,180,155,119
  737. ;Data 79,45,23,12,8,7,7,8
  738. ;Data 8,8,8,9,9,9,9,10
  739. ;Data 10,10,10,10,11,11,11,11
  740. ;Data 11,11,11,11,11,10,10,10
  741. ;Data 10,10,9,9,9,9,8,8
  742. ;Data 8,8,7,7,9,15,29,55
  743. ;Data 92,132,166,189,198,182,14,3
  744. ;Data 3,22,204,211,202,188,167,136
  745. ;Data 97,59,32,16,10,7,7,7
  746. ;Data 8,8,8,8,9,9,9,9
  747. ;Data 10,10,10,10,10,10,10,10
  748. ;Data 10,10,10,10,10,10,10,10
  749. ;Data 10,9,9,9,9,8,8,8
  750. ;Data 8,7,7,8,11,20,39,71
  751. ;Data 110,149,179,196,202,197,22,3
  752. ;Data 3,8,120,217,206,194,178,152
  753. ;Data 116,77,44,23,12,8,7,7
  754. ;Data 7,8,8,8,9,9,9,9
  755. ;Data 9,10,10,10,10,10,10,10
  756. ;Data 10,10,10,10,10,10,10,10
  757. ;Data 9,9,9,9,9,8,8,8
  758. ;Data 7,7,7,9,15,28,53,89
  759. ;Data 129,164,188,200,209,115,8,3
  760. ;Data 2,3,41,197,208,200,187,166
  761. ;Data 135,97,60,33,17,10,8,7
  762. ;Data 7,7,8,8,8,8,9,9
  763. ;Data 9,9,9,10,10,10,10,10
  764. ;Data 10,10,10,10,10,10,9,9
  765. ;Data 9,9,9,8,8,8,8,7
  766. ;Data 7,7,8,12,21,40,71,109
  767. ;Data 147,177,195,201,190,41,3,3
  768. ;Data 2,3,3,127,216,203,194,177
  769. ;Data 152,118,80,48,26,15,9,8
  770. ;Data 7,7,7,8,8,8,8,9
  771. ;Data 9,9,9,9,9,9,9,9
  772. ;Data 9,9,9,9,9,9,9,9
  773. ;Data 9,9,8,8,8,8,7,7
  774. ;Data 7,8,11,17,32,57,91,129
  775. ;Data 163,187,197,207,123,3,3,3
  776. ;Data 2,2,3,24,156,206,201,187
  777. ;Data 167,139,104,69,41,23,13,9
  778. ;Data 7,7,7,7,8,8,8,8
  779. ;Data 9,9,9,9,9,9,9,9
  780. ;Data 9,9,9,9,9,9,9,9
  781. ;Data 9,8,8,8,8,7,7,7
  782. ;Data 8,10,15,28,49,79,115,149
  783. ;Data 177,193,199,148,24,3,3,2
  784. ;Data 2,2,3,3,56,214,205,195
  785. ;Data 180,159,129,95,62,37,20,12
  786. ;Data 9,7,7,7,7,8,8,8
  787. ;Data 8,8,8,9,9,9,9,9
  788. ;Data 9,9,9,9,9,9,8,8
  789. ;Data 8,8,8,8,7,7,7,8
  790. ;Data 9,14,25,44,72,105,139,168
  791. ;Data 188,197,199,56,3,3,3,2
  792. ;Data 2,2,2,3,12,152,212,201
  793. ;Data 191,175,152,122,88,56,33,19
  794. ;Data 12,9,7,7,7,7,8,8
  795. ;Data 8,8,8,8,8,8,8,8
  796. ;Data 8,8,8,8,8,8,8,8
  797. ;Data 8,8,8,7,7,7,8,10
  798. ;Data 14,23,40,66,99,132,162,183
  799. ;Data 196,204,144,13,3,3,2,2
  800. ;Data 2,2,2,3,3,57,196,207
  801. ;Data 198,187,171,146,115,81,52,32
  802. ;Data 20,13,9,8,7,7,7,7
  803. ;Data 8,8,8,8,8,8,8,8
  804. ;Data 8,8,8,8,8,8,8,8
  805. ;Data 8,7,7,7,7,8,10,15
  806. ;Data 23,38,62,93,126,156,179,192
  807. ;Data 200,188,58,3,3,3,2,2
  808. ;Data 2,2,2,2,3,3,62,196
  809. ;Data 201,195,184,167,141,110,80,55
  810. ;Data 36,23,15,10,9,7,7,7
  811. ;Data 7,7,7,8,8,8,8,8
  812. ;Data 8,8,8,8,8,8,7,7
  813. ;Data 7,7,7,8,9,11,16,26
  814. ;Data 41,62,90,121,152,176,190,195
  815. ;Data 187,62,3,3,3,2,2,2
  816. ;Data 2,2,2,2,2,3,3,57
  817. ;Data 198,203,195,183,164,140,113,86
  818. ;Data 62,42,27,18,13,9,8,7
  819. ;Data 7,7,7,7,7,7,7,7
  820. ;Data 7,7,7,7,7,7,7,7
  821. ;Data 7,7,9,10,14,21,31,47
  822. ;Data 68,94,122,150,174,190,197,187
  823. ;Data 57,3,3,3,2,2,2,2
  824. ;Data 1,2,2,2,2,3,3,5
  825. ;Data 153,219,203,195,183,166,145,122
  826. ;Data 96,71,50,34,23,16,11,9
  827. ;Data 8,8,7,7,7,7,7,7
  828. ;Data 7,7,7,7,7,7,7,8
  829. ;Data 8,10,13,18,26,39,56,78
  830. ;Data 103,129,153,175,190,198,212,147
  831. ;Data 5,3,3,3,2,2,2,2
  832. ;Data 1,1,2,2,2,2,3,3
  833. ;Data 26,165,219,203,195,185,171,154
  834. ;Data 131,107,83,62,44,31,21,16
  835. ;Data 13,11,9,9,8,8,8,8
  836. ;Data 8,8,8,8,8,9,10,11
  837. ;Data 13,18,24,34,49,69,91,115
  838. ;Data 139,161,179,191,199,214,158,26
  839. ;Data 3,3,3,2,2,2,2,1
  840. ;Data 1,1,2,2,2,2,2,3
  841. ;Data 3,18,153,196,202,197,189,178
  842. ;Data 162,142,120,98,76,57,43,33
  843. ;Data 26,21,17,15,14,13,13,13
  844. ;Data 13,13,13,13,14,17,19,23
  845. ;Data 28,36,48,63,83,106,129,151
  846. ;Data 169,184,193,197,187,147,19,3
  847. ;Data 3,3,2,2,2,2,2,1
  848. ;Data 1,1,1,2,2,2,2,2
  849. ;Data 3,3,3,60,191,207,201,194
  850. ;Data 184,171,154,135,114,94,77,63
  851. ;Data 52,44,37,32,29,27,27,27
  852. ;Data 27,27,27,28,30,34,40,46
  853. ;Data 55,67,82,101,122,143,163,179
  854. ;Data 190,196,203,183,61,3,3,3
  855. ;Data 3,2,2,2,2,2,1,1
  856. ;Data 1,1,1,1,2,2,2,2
  857. ;Data 2,3,3,3,61,195,217,203
  858. ;Data 199,191,180,167,151,134,118,103
  859. ;Data 91,80,70,63,58,55,55,55
  860. ;Data 55,55,55,56,59,66,74,84
  861. ;Data 96,109,124,141,159,175,187,196
  862. ;Data 201,211,191,62,3,3,3,3
  863. ;Data 2,2,2,2,2,1,1,1
  864. ;Data 1,1,1,1,1,2,2,2
  865. ;Data 2,2,3,3,3,61,144,216
  866. ;Data 208,201,197,190,180,169,157,145
  867. ;Data 134,123,113,105,100,97,96,96
  868. ;Data 96,96,96,98,101,108,118,128
  869. ;Data 139,151,163,176,186,194,197,206
  870. ;Data 211,141,61,3,3,3,3,2
  871. ;Data 2,2,2,2,1,1,1,1
  872. ;Data 1,1,1,1,1,1,2,2
  873. ;Data 2,2,2,3,3,3,5,62
  874. ;Data 150,195,208,204,199,193,186,178
  875. ;Data 170,162,154,148,145,143,142,141
  876. ;Data 141,142,142,143,146,151,158,167
  877. ;Data 175,183,190,198,200,206,188,143
  878. ;Data 62,5,3,3,3,3,2,2
  879. ;Data 2,2,2,1,1,1,1,1
  880. ;Data 0,1,1,1,1,1,1,2
  881. ;Data 2,2,2,2,2,3,3,3
  882. ;Data 7,59,192,220,213,205,202,200
  883. ;Data 194,190,186,182,180,178,177,177
  884. ;Data 177,177,178,179,181,184,188,193
  885. ;Data 197,199,203,211,218,189,60,7
  886. ;Data 3,3,3,3,2,2,2,2
  887. ;Data 2,2,1,1,1,1,1,1
  888. ;Data 0,0,1,1,1,1,1,1
  889. ;Data 2,2,2,2,2,2,3,3
  890. ;Data 3,3,45,114,198,193,210,212
  891. ;Data 205,204,204,201,200,198,198,198
  892. ;Data 198,198,198,199,200,201,202,205
  893. ;Data 210,206,185,195,115,45,3,3
  894. ;Data 3,3,3,2,2,2,2,2
  895. ;Data 2,1,1,1,1,1,1,0
  896. ;Data 0,0,0,1,1,1,1,1
  897. ;Data 1,2,2,2,2,2,2,2
  898. ;Data 3,3,3,3,21,23,95,150
  899. ;Data 185,222,217,215,212,210,209,209
  900. ;Data 209,209,210,211,213,217,219,183
  901. ;Data 146,95,23,21,3,3,3,3
  902. ;Data 3,2,2,2,2,2,2,2
  903. ;Data 1,1,1,1,1,1,0,0
  904. ;Data 0,0,0,0,1,1,1,1
  905. ;Data 1,1,1,2,2,2,2,2
  906. ;Data 2,2,3,3,3,3,3,3
  907. ;Data 40,86,85,85,142,231,227,227
  908. ;Data 227,227,227,142,85,85,86,40
  909. ;Data 3,3,3,3,3,3,3,2
  910. ;Data 2,2,2,2,2,2,1,1
  911. ;Data 1,1,1,1,1,0,0,0
  912. ;Data -1


Comments :


Nate the Great(Posted 1+ years ago)

 I see that you are using "get pixel" for every pixel on the screen.  I cant find it but it seems like there was a better (faster) way somewhere in the code arcs.


_PJ_(Posted 1+ years ago)

 You'd think there ought to be a faster way to do it, but I couldn't find anything either. Rather than codearcs here, I looked through MSDN, though...---Edit - Still no joy. I think you may be referring to a BlitMax solution, of which there seem to be quite a few floating around the forums in general.What's worse, is that due to not writing direct to a suitable resolution ratio texture, means those pixels are read and written multiple times, admittedly, WritePixelFast comes into play for the BB buffer stuff.


_PJ_(Posted 1+ years ago)

 OKAY I spoke too soon maybe!A Possible alternative and perhaps potentially faster solution to "GetPixel" is to blitter a rectangular capture with GDI32 function: BitBltdecls:
Code: [Select]
.Lib "gdi32.dll"
BitBlt%(hDestDC%,X%,Y%,nWidth%,nHeight%,hSrcDC,XSrc,YSrc,dwRop):"BitBlt"
So far,though, I've not bbeen able to get this working but maybe someone else can? Any advice/recommendation welcome :)


_PJ_(Posted 1+ years ago)

 Update:Still working on the BitBlt - I've made some progress, and it seems a faster method, but still some issues that need ironing out.-------I've re-implemented the Mouse movement cancelling the screensaver in accordance with the Windows 7 original.Also, there's a check for focus loss which cancels it too, since being windowed, it was possible for the mouse to be off the Window when the main loop began.(The code in the first post is altered to reflect these changes). Note the addition of a new Userlib declaration for :user32_GetFocus()


_PJ_(Posted 1+ years ago)

 WOw, been over a year sine I did this? Doesn't time fly!Anywho- I never did gtet the Blitting to work properly, but there were some minor changes (made escaping/cancelling the app smoother and better for screensaver functionality) and addressed a couple of little bugs!Code above has been updated! [/i]

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal