Little delirium 2 - Gradient demo

Share your advanced PureBasic knowledge/code with the community.
User avatar
djes
Addict
Addict
Posts: 1806
Joined: Sat Feb 19, 2005 2:46 pm
Location: Pas-de-Calais, France

Little delirium 2 - Gradient demo

Post by djes »

Code: Select all

;********************************
;*
;* GRADIENT DEMO
;* djes 02/04/2011
;*
;********************************

Procedure CreateSpr(i)
  
  StartDrawing(ImageOutput(0))
 
  DrawingMode(#PB_2DDrawing_Gradient)      
  BackColor(RGBA(0, 0, 255, 255))
  GradientColor(0.25, RGBA(0, 255, 0, 0))
  GradientColor(0.5, RGBA(255, 0, 0, 0))
  GradientColor(0.75, RGBA(255, 255, 0, 0))
  FrontColor(RGBA(0, 0, 255, 255))
  
;  LinearGradient(0, i, 128, i)
;  ConicalGradient(64, 64, i)
  CircularGradient(64, 64, i)
  Circle(64, 64, 64)
  StopDrawing()
  
  StartDrawing(ScreenOutput())      
  DrawImage(ImageID(0), 0, 0)
  StopDrawing()     
    
  GrabSprite(0, 0, 0, 128, 128, #PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    
  CreateSprite3D(0, 0)
EndProcedure
  

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Sprite system can't be initialized", 0)
  End
EndIf

If InitSprite3D() = 0
  MessageRequester("Error", "Sprite3D system can't be initialized correctly", 0)
  End
EndIf

If OpenWindow(0, 0, 0, 512, 512, "Gradient Delirium", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  If OpenWindowedScreen(WindowID(0), 0, 0, 512, 512, 0, 0, 0)
    
    CreateImage(0, 128, 128, 32)
    CreateSpr(0)        
    Sprite3DQuality(#PB_Sprite3D_BilinearFiltering)
   
    i.f = 0
    bl_src = 1
    bl_dst = 4
    
    Repeat
      
      Event = WindowEvent()
      
      Select Event 
        Case #PB_Event_Gadget
          If EventGadget() = 0
            End
          EndIf       
        Case #PB_Event_CloseWindow
          End 
      EndSelect
     
      FlipBuffers()
      
      CreateSpr( 48 + 8 * Sin(i * 10) )
      ClearScreen(RGBA(0,50,128, 255))
      
      If Start3D()
        
        Sprite3DBlendingMode(bl_src, bl_dst) 
  
        For y = -1 To 7

          For x = -1 To 7
            Sprite3DBlendingMode(bl_src + y , bl_dst) 
            w = 128 + 32 * Sin(i)
            h = 128 + 32 * Cos(i + x)
            ZoomSprite3D(0, w, h)
            RotateSprite3D(0, i * x * 100 + x * 5 + y * 20, 0)
            DisplaySprite3D(0, x * 64 +8 * Sin(i * 10 + x), y * 64 + 8 * Cos(i * 20 + x + y))
          Next x
        Next y
        
        Stop3D()
      EndIf
      
      ExamineKeyboard()
      
      If KeyboardReleased(#PB_Key_Up)
        bl_src + 1
      EndIf
      If KeyboardReleased(#PB_Key_Down)
        bl_src - 1
      EndIf
      If KeyboardReleased(#PB_Key_Left)
        bl_dst + 1
      EndIf
      If KeyboardReleased(#PB_Key_Right)
        bl_dst - 1
      EndIf
      StartDrawing(ScreenOutput())
      DrawText(0,  0, Str(bl_src))
      DrawText(0, 16, Str(bl_dst))
      StopDrawing()
      i+0.01
    Until KeyboardPushed(#PB_Key_Escape)
  
  Else
    MessageRequester("Erreur", "Can't open a screen !", 0)
    End
  EndIf  

Else
  MessageRequester("Error", "Can't open a window !", 0)
EndIf
  
  
End   
rsts
Addict
Addict
Posts: 2736
Joined: Wed Aug 24, 2005 8:39 am
Location: Southwest OH - USA

Re: Little delirium 2 - Gradient demo

Post by rsts »

Wild :shock:

Thanks for posting.
User avatar
Kwai chang caine
Always Here
Always Here
Posts: 5494
Joined: Sun Nov 05, 2006 11:42 pm
Location: Lyon - France

Re: Little delirium 2 - Gradient demo

Post by Kwai chang caine »

Ouuuuchhh !!! my eyes :shock: :lol:
Thanks for sharing 8)
ImageThe happiness is a road...
Not a destination
User avatar
blueznl
PureBasic Expert
PureBasic Expert
Posts: 6166
Joined: Sat May 17, 2003 11:31 am
Contact:

Re: Little delirium 2 - Gradient demo

Post by blueznl »

Good for a day off... two paracetamol and one asprin please...

(Nice.)
( PB6.00 LTS Win11 x64 Asrock AB350 Pro4 Ryzen 5 3600 32GB GTX1060 6GB)
( The path to enlightenment and the PureBasic Survival Guide right here... )
Post Reply