Page 1 of 1

Little delirium 2 - Gradient demo

Posted: Sat Apr 02, 2011 1:35 am
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   

Re: Little delirium 2 - Gradient demo

Posted: Sat Apr 02, 2011 2:11 am
by rsts
Wild :shock:

Thanks for posting.

Re: Little delirium 2 - Gradient demo

Posted: Sat Apr 02, 2011 7:31 pm
by Kwai chang caine
Ouuuuchhh !!! my eyes :shock: :lol:
Thanks for sharing 8)

Re: Little delirium 2 - Gradient demo

Posted: Tue Apr 05, 2011 6:01 pm
by blueznl
Good for a day off... two paracetamol and one asprin please...

(Nice.)