Horloge digital (Version 2)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Horloge digital (Version 2)

Message par Guimauve »

Un vieux code que j'ai retaper. Je ne sais où j'ai obtenu le code original.
Le code source est sur 4 fichiers.

A+
Guimauve

Fichier 1 : DigitalClock - DigitalClock object.pb

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; CODE GÉNÉRÉ AUTOMATIQUEMENT, NE PAS MODIFIER À
; MOINS D'AVOIR UNE RAISON TRÈS TRÈS VALABLE !!!
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Déclaration de la Structure >>>>>

Structure Ltime
   
   wYear.w
   wMonth.w
   wDayOfWeek.w
   wDay.w
   wHour.w
   wMinute.w
   wSecond.w
   wMilliseconds.w
   
EndStructure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les observateurs >>>>>

Macro GetLtimewYear(ObjetA) 
   ObjetA\wYear 
EndMacro

Macro GetLtimewMonth(ObjetA) 
   ObjetA\wMonth 
EndMacro

Macro GetLtimewDayOfWeek(ObjetA) 
   ObjetA\wDayOfWeek 
EndMacro

Macro GetLtimewDay(ObjetA) 
   ObjetA\wDay 
EndMacro

Macro GetLtimewHour(ObjetA) 
   ObjetA\wHour 
EndMacro

Macro GetLtimewMinute(ObjetA) 
   ObjetA\wMinute 
EndMacro

Macro GetLtimewSecond(ObjetA) 
   ObjetA\wSecond 
EndMacro

Macro GetLtimewMilliseconds(ObjetA)
   ObjetA\wMilliseconds 
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Déclaration de la Structure >>>>>

Structure DigitalClock
   
   SegmentOn.l
   SegmentOff.l
   BlinkLEDcolor.l
   SecondLEDcolor.l
   FiveSecLEDcolor1.l
   FiveSecLEDcolor2.l
   WhiteColor.l
   CharColor.l
   DateVersion.b
   DayFlag.w
   SecondFlag.w
   XNumPos.w
   YNumPos.w
   Xcircle.w
   Ycircle.w
   Rcircle.w
   Ytext.w
   ScreenW.w
   ScreenH.w
   DayWeek.s[7]
   MMonth.s[13]
   CharWidth.b[257]
   LocalTime.Ltime
   
EndStructure

; <<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les mutateurs >>>>>

Macro SetDigitalClockSegmentOn(ObjetA, SegmentOn_Long) 
   ObjetA\SegmentOn = SegmentOn_Long 
EndMacro

Macro SetDigitalClockSegmentOff(ObjetA, SegmentOff_Long) 
   ObjetA\SegmentOff = SegmentOff_Long 
EndMacro

Macro SetDigitalClockBlinkLEDcolor(ObjetA, BlinkLEDcolor_Long) 
   ObjetA\BlinkLEDcolor = BlinkLEDcolor_Long 
EndMacro

Macro SetDigitalClockSecondLEDcolor(ObjetA, SecondLEDcolor_Long) 
   ObjetA\SecondLEDcolor = SecondLEDcolor_Long 
EndMacro

Macro SetDigitalClockFiveSecLEDcolor1(ObjetA, FiveSecLEDcolor1_Long) 
   ObjetA\FiveSecLEDcolor1 = FiveSecLEDcolor1_Long 
EndMacro

Macro SetDigitalClockFiveSecLEDcolor2(ObjetA, FiveSecLEDcolor2_Long) 
   ObjetA\FiveSecLEDcolor2 = FiveSecLEDcolor2_Long 
EndMacro

Macro SetDigitalClockWhiteColor(ObjetA, WhiteColor_Long) 
   ObjetA\WhiteColor = WhiteColor_Long 
EndMacro

Macro SetDigitalClockCharColor(ObjetA, CharColor_Long) 
   ObjetA\CharColor = CharColor_Long 
EndMacro

Macro SetDigitalClockDateVersion(ObjetA, DateVersion_Byte) 
   ObjetA\DateVersion = DateVersion_Byte 
EndMacro

Macro SetDigitalClockDayFlag(ObjetA, DayFlag_Word) 
   ObjetA\DayFlag = DayFlag_Word 
EndMacro

Macro SetDigitalClockSecondFlag(ObjetA, SecondFlag_Word) 
   ObjetA\SecondFlag = SecondFlag_Word 
EndMacro

Macro SetDigitalClockXNumPos(ObjetA, XNumPos_Word) 
   ObjetA\XNumPos = XNumPos_Word 
EndMacro

Macro SetDigitalClockYNumPos(ObjetA, YNumPos_Word) 
   ObjetA\YNumPos = YNumPos_Word 
EndMacro

Macro SetDigitalClockXcircle(ObjetA, Xcircle_Word) 
   ObjetA\Xcircle = Xcircle_Word 
EndMacro

Macro SetDigitalClockYcircle(ObjetA, Ycircle_Word) 
   ObjetA\Ycircle = Ycircle_Word 
EndMacro

Macro SetDigitalClockRcircle(ObjetA, Rcircle_Word) 
   ObjetA\Rcircle = Rcircle_Word 
EndMacro

Macro SetDigitalClockYtext(ObjetA, Ytext_Word) 
   ObjetA\Ytext = Ytext_Word 
EndMacro

Macro SetDigitalClockScreenW(ObjetA, ScreenW_Word) 
   ObjetA\ScreenW = ScreenW_Word 
EndMacro

Macro SetDigitalClockScreenH(ObjetA, ScreenH_Word) 
   ObjetA\ScreenH = ScreenH_Word 
EndMacro

Macro SetDigitalClockDayWeek(ObjetA, Index, DayWeek_String)
   ObjetA\DayWeek[Index] = DayWeek_String 
EndMacro

Macro SetDigitalClockMMonth(ObjetA, Index, MMonth_String)
   ObjetA\MMonth[Index] = MMonth_String 
EndMacro

Macro SetDigitalClockCharWidth(ObjetA, Index, CharWidth_Byte) 
   ObjetA\CharWidth[Index] = CharWidth_Byte 
EndMacro

Macro SetDigitalClockLocalTime(ObjetA, LocalTime_LTime) 
   CopyMemory(LocalTime_LTime, ObjetA\LocalTime, SizeOf(Ltime)) 
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les observateurs >>>>>

Macro GetDigitalClockSegmentOn(ObjetA) 
   ObjetA\SegmentOn 
EndMacro

Macro GetDigitalClockSegmentOff(ObjetA) 
   ObjetA\SegmentOff 
EndMacro

Macro GetDigitalClockBlinkLEDcolor(ObjetA) 
   ObjetA\BlinkLEDcolor 
EndMacro

Macro GetDigitalClockSecondLEDcolor(ObjetA)
   ObjetA\SecondLEDcolor
EndMacro

Macro GetDigitalClockFiveSecLEDcolor1(ObjetA)
   ObjetA\FiveSecLEDcolor1 
EndMacro

Macro GetDigitalClockFiveSecLEDcolor2(ObjetA) 
   ObjetA\FiveSecLEDcolor2 
EndMacro

Macro GetDigitalClockWhiteColor(ObjetA) 
   ObjetA\WhiteColor 
EndMacro

Macro GetDigitalClockCharColor(ObjetA) 
   ObjetA\CharColor 
EndMacro

Macro GetDigitalClockDateVersion(ObjetA) 
   ObjetA\DateVersion 
EndMacro

Macro GetDigitalClockDayFlag(ObjetA) 
   ObjetA\DayFlag
EndMacro

Macro GetDigitalClockSecondFlag(ObjetA) 
   ObjetA\SecondFlag 
EndMacro

Macro GetDigitalClockXNumPos(ObjetA) 
   ObjetA\XNumPos 
EndMacro

Macro GetDigitalClockYNumPos(ObjetA) 
   ObjetA\YNumPos 
EndMacro

Macro GetDigitalClockXcircle(ObjetA) 
   ObjetA\Xcircle 
EndMacro

Macro GetDigitalClockYcircle(ObjetA) 
   ObjetA\Ycircle 
EndMacro

Macro GetDigitalClockRcircle(ObjetA) 
   ObjetA\Rcircle 
EndMacro

Macro GetDigitalClockYtext(ObjetA) 
   ObjetA\Ytext 
EndMacro

Macro GetDigitalClockScreenW(ObjetA) 
   ObjetA\ScreenW 
EndMacro

Macro GetDigitalClockScreenH(ObjetA) 
   ObjetA\ScreenH 
EndMacro

Macro GetDigitalClockDayWeek(ObjetA, Index) 
   ObjetA\DayWeek[Index] 
EndMacro

Macro GetDigitalClockMMonth(ObjetA, Index) 
   ObjetA\MMonth[Index] 
EndMacro

Macro GetDigitalClockCharWidth(ObjetA, Index) 
   ObjetA\CharWidth[Index] 
EndMacro

Macro GetDigitalClockLocalTime(ObjetA) 
   ObjetA\LocalTime 
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Code généré en : 78 ms <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Fichier 2 : DigitalClock - Constants.pb

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Digital clock
; Fichier : DigitalClock - Constants.pb
; Date : 01-10-2003
; Mise à jour : 17-06-2006
; Codé avec PureBasic V4.00
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

#BlinkDelay = 500

Macro RGBColor(Red,Green,Blue) 
   (((Blue << 8 + Green) << 8) + Red) 
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Initialisation de la structure mère 

; SetDigitalClockScreenW(DigitalClock, 800)
; SetDigitalClockScreenH(DigitalClock, 600)
; SetDigitalClockScreenW(DigitalClock, 1024)
; SetDigitalClockScreenH(DigitalClock, 768)

SetDigitalClockScreenW(DigitalClock.DigitalClock, GetSystemMetrics_(#SM_CXSCREEN))
SetDigitalClockScreenH(DigitalClock, GetSystemMetrics_(#SM_CYSCREEN))
SetDigitalClockSegmentOn(DigitalClock, RGBColor(000,255,000))
SetDigitalClockSegmentOff(DigitalClock, RGBColor(015,015,015))
SetDigitalClockBlinkLEDcolor(DigitalClock, RGBColor(094,170,245))
SetDigitalClockSecondLEDcolor(DigitalClock, RGBColor(60,207,045))
SetDigitalClockFiveSecLEDcolor1(DigitalClock, RGBColor(085,108,248))
SetDigitalClockFiveSecLEDcolor2(DigitalClock, RGBColor(255,000,000))
SetDigitalClockWhiteColor(DigitalClock, RGBColor(255,255,255))
SetDigitalClockCharColor(DigitalClock, RGBColor(128,000,255))
SetDigitalClockDayWeek(DigitalClock, 0, "Dimanche")
SetDigitalClockDayWeek(DigitalClock, 1, "Lundi")
SetDigitalClockDayWeek(DigitalClock, 2, "Mardi")
SetDigitalClockDayWeek(DigitalClock, 3, "Mercredi")
SetDigitalClockDayWeek(DigitalClock, 4, "Jeudi")
SetDigitalClockDayWeek(DigitalClock, 5, "Vendredi")
SetDigitalClockDayWeek(DigitalClock, 6, "Samedi")
SetDigitalClockMMonth(DigitalClock, 1, "janvier")
SetDigitalClockMMonth(DigitalClock, 2, "février")
SetDigitalClockMMonth(DigitalClock, 3, "mars")
SetDigitalClockMMonth(DigitalClock, 4, "avril")
SetDigitalClockMMonth(DigitalClock, 5, "mai")
SetDigitalClockMMonth(DigitalClock, 6, "juin")
SetDigitalClockMMonth(DigitalClock, 7, "juillet")
SetDigitalClockMMonth(DigitalClock, 8, "août")
SetDigitalClockMMonth(DigitalClock, 9, "septembre")
SetDigitalClockMMonth(DigitalClock, 10, "octobre")
SetDigitalClockMMonth(DigitalClock, 11, "novembre")
SetDigitalClockMMonth(DigitalClock, 12, "décembre")

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Date version  : 0 = [Day, MM DD, YY] : 1 = [Day DD MM YY]

SetDigitalClockDateVersion(DigitalClock, 1) 
SetDigitalClockDayFlag(DigitalClock, -1)
SetDigitalClockSecondFlag(DigitalClock, -1)
SetDigitalClockXNumPos(DigitalClock, (GetDigitalClockScreenW(DigitalClock) - 345) >> 1)
SetDigitalClockYNumPos(DigitalClock, (GetDigitalClockScreenH(DigitalClock) >> 1) - 80)
SetDigitalClockXcircle(DigitalClock, GetDigitalClockScreenW(DigitalClock) >> 1)
SetDigitalClockYcircle(DigitalClock, GetDigitalClockScreenH(DigitalClock) >> 1)
SetDigitalClockRcircle(DigitalClock, (GetDigitalClockScreenH(DigitalClock) >> 1) - 50)
SetDigitalClockYtext(DigitalClock, (GetDigitalClockScreenH(DigitalClock) >> 1))

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Date character font
; To create a new character, enter:
; - 3 data values (char width, char height, upper line of the char in the sprite)
; - Build a Data grid (CharWidth x CharHeight) with 1 for dot-on and 0 for dot-off

DataSection ;>
   Data.b 2, 1, 1             ;ASCII 32 - Space 
   Data.b 0,0
   Data.b 2, 3, 11            ;ASCII 44 - Comma
   Data.b 0,1     
   Data.b 0,1
   Data.b 1,0
   ;Numbers
   Data.b 6, 10, 2            ;0 ASCII 48
   Data.b 0,1,1,1,1,0       
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 0,1,1,1,1,0
   Data.b 3, 10, 2           ;1
   Data.b 0,0,1
   Data.b 0,1,1
   Data.b 1,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 6, 10, 2           ;2
   Data.b 0,1,1,1,1,0
   Data.b 1,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,1,0
   Data.b 0,0,0,1,0,0
   Data.b 0,0,1,0,0,0
   Data.b 0,1,0,0,0,0
   Data.b 1,1,1,1,1,1
   Data.b 6, 10, 2           ;3
   Data.b 0,1,1,1,1,0
   Data.b 1,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 0,0,1,1,1,0
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 0,1,1,1,1,0
   Data.b 6, 10, 2           ;4
   Data.b 0,0,0,0,1,0
   Data.b 0,0,0,1,1,0
   Data.b 0,0,0,1,1,0
   Data.b 0,0,1,0,1,0
   Data.b 0,0,1,0,1,0
   Data.b 0,1,0,0,1,0
   Data.b 0,1,0,0,1,0
   Data.b 1,1,1,1,1,1
   Data.b 0,0,0,0,1,0
   Data.b 0,0,0,0,1,0
   Data.b 6, 10, 2           ;5
   Data.b 1,1,1,1,1,1
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,1,1,1,1,0
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 0,1,1,1,1,0
   Data.b 6, 10, 2          ;6
   Data.b 0,1,1,1,1,0
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,1,1,1,0
   Data.b 1,1,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 0,1,1,1,1,0
   Data.b 6, 10, 2           ;7
   Data.b 1,1,1,1,1,1
   Data.b 0,0,0,0,1,0
   Data.b 0,0,0,0,1,0
   Data.b 0,0,0,1,0,0
   Data.b 0,0,0,1,0,0
   Data.b 0,0,1,0,0,0
   Data.b 0,0,1,0,0,0
   Data.b 0,1,0,0,0,0
   Data.b 0,1,0,0,0,0
   Data.b 0,1,0,0,0,0
   Data.b 6, 10, 2           ;8
   Data.b 0,1,1,1,1,0
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 0,1,1,1,1,0
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 0,1,1,1,1,0 
   Data.b 6, 10, 2           ;9
   Data.b 0,1,1,1,1,0
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 1,0,0,0,1,1
   Data.b 0,1,1,1,0,1
   Data.b 0,0,0,0,0,1
   Data.b 0,0,0,0,0,1
   Data.b 1,0,0,0,0,1
   Data.b 0,1,1,1,1,0
    ;Upper case letters
   Data.b 7, 10, 2           ;A
   Data.b 0,0,1,1,1,0,0
   Data.b 0,1,0,0,0,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,1,1,1,1,1,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1 
   Data.b 7, 10, 2           ;B
   Data.b 1,1,1,1,1,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,1,1,1,1,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,1,1,1,1,1,0
   Data.b 7, 10, 2           ;C
   Data.b 0,0,1,1,1,0,0
   Data.b 0,1,0,0,0,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,0,0,0,1
   Data.b 0,1,0,0,0,1,0
   Data.b 0,0,1,1,1,0,0
   Data.b 7, 10, 2           ;D
   Data.b 1,1,1,1,1,0,0
   Data.b 1,0,0,0,0,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,1,0
   Data.b 1,1,1,1,1,0,0 
   Data.b 6, 10, 2           ;E
   Data.b 1,1,1,1,1,1
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,1,1,1,1,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,1,1,1,1,1 
   Data.b 6, 10, 2           ;F
   Data.b 1,1,1,1,1,1
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,1,1,1,1,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 7, 10, 2           ;G
   Data.b 0,0,1,1,1,0,0
   Data.b 0,1,0,0,0,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,1,1,1,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 0,1,0,0,0,1,0
   Data.b 0,0,1,1,1,0,0
   Data.b 7, 10, 2           ;H
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,1,1,1,1,1,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1, 10, 2           ;I
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1 
   Data.b 5, 10, 2           ;J
   Data.b 0,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,0
   Data.b 7, 10, 2           ;K
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,1,0
   Data.b 1,0,0,0,1,0,0
   Data.b 1,0,0,1,0,0,0
   Data.b 1,0,1,0,0,0,0
   Data.b 1,1,1,0,0,0,0
   Data.b 1,0,0,1,0,0,0
   Data.b 1,0,0,0,1,0,0
   Data.b 1,0,0,0,0,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 6, 10, 2           ;L
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,0,0,0,0,0
   Data.b 1,1,1,1,1,1
   Data.b 9, 10, 2           ;M
   Data.b 1,0,0,0,0,0,0,0,1
   Data.b 1,1,0,0,0,0,0,1,1
   Data.b 1,1,0,0,0,0,0,1,1
   Data.b 1,0,1,0,0,0,1,0,1
   Data.b 1,0,1,0,0,0,1,0,1
   Data.b 1,0,0,1,0,1,0,0,1
   Data.b 1,0,0,1,0,1,0,0,1
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 1,0,0,0,0,0,0,0,1
   Data.b 7, 10, 2           ;N
   Data.b 1,0,0,0,0,0,1
   Data.b 1,1,0,0,0,0,1
   Data.b 1,0,1,0,0,0,1
   Data.b 1,0,1,0,0,0,1
   Data.b 1,0,0,1,0,0,1
   Data.b 1,0,0,1,0,0,1
   Data.b 1,0,0,0,1,0,1
   Data.b 1,0,0,0,1,0,1
   Data.b 1,0,0,0,0,1,1
   Data.b 1,0,0,0,0,0,1
   Data.b 8, 10, 2           ;O
   Data.b 0,0,1,1,1,1,0,0
   Data.b 0,1,0,0,0,0,1,0
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 0,1,0,0,0,0,1,0
   Data.b 0,0,1,1,1,1,0,0
   Data.b 7, 10, 2           ;P
   Data.b 1,1,1,1,1,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,1,1,1,1,1,0
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,0,0,0,0
   Data.b 1,0,0,0,0,0,0
   Data.b 8, 10, 2           ;Q
   Data.b 0,0,1,1,1,1,0,0
   Data.b 0,1,0,0,0,0,1,0
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,1
   Data.b 1,0,0,0,1,1,0,1
   Data.b 0,1,0,0,0,0,1,0
   Data.b 0,0,1,1,1,1,0,1
   Data.b 7, 10, 2           ;R
   Data.b 1,1,1,1,1,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,1,1,1,1,1,0
   Data.b 1,0,0,0,1,0,0
   Data.b 1,0,0,0,0,1,0
   Data.b 1,0,0,0,0,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 7, 10, 2           ;S
   Data.b 0,1,1,1,1,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0
   Data.b 0,1,1,1,0,0,0
   Data.b 0,0,0,0,1,1,0
   Data.b 0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 0,1,1,1,1,1,0
   Data.b 7, 10, 2           ;T
   Data.b 1,1,1,1,1,1,1
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 7, 10, 2           ;U
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 0,1,0,0,0,1,0
   Data.b 0,0,1,1,1,0,0
   Data.b 9, 10, 2           ;V
   Data.b 1,0,0,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,0,0,1
   Data.b 0,1,0,0,0,0,0,1,0
   Data.b 0,1,0,0,0,0,0,1,0
   Data.b 0,0,1,0,0,0,1,0,0
   Data.b 0,0,1,0,0,0,1,0,0
   Data.b 0,0,0,1,0,1,0,0,0
   Data.b 0,0,0,1,0,1,0,0,0
   Data.b 0,0,0,0,1,0,0,0,0
   Data.b 0,0,0,0,1,0,0,0,0
   Data.b 13, 10, 2           ;W
   Data.b 1,0,0,0,0,0,1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,1,0,1,0,0,0,0,1
   Data.b 0,1,0,0,0,1,0,1,0,0,0,1,0
   Data.b 0,1,0,0,0,1,0,1,0,0,0,1,0
   Data.b 0,1,0,0,0,1,0,1,0,0,0,1,0
   Data.b 0,0,1,0,1,0,0,0,1,0,1,0,0
   Data.b 0,0,1,0,1,0,0,0,1,0,1,0,0
   Data.b 0,0,1,0,1,0,0,0,1,0,1,0,0
   Data.b 0,0,0,1,0,0,0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0,0,0,1,0,0,0
   Data.b 7, 10, 2           ;X
   Data.b 1,0,0,0,0,0,1
   Data.b 0,1,0,0,0,1,0
   Data.b 0,1,0,0,0,1,0
   Data.b 0,0,1,0,1,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,1,0,1,0,0
   Data.b 0,1,0,0,0,1,0
   Data.b 0,1,0,0,0,1,0
   Data.b 1,0,0,0,0,0,1
   Data.b 7, 10, 2           ;Y
   Data.b 1,0,0,0,0,0,1
   Data.b 1,0,0,0,0,0,1
   Data.b 0,1,0,0,0,1,0
   Data.b 0,1,0,0,0,1,0
   Data.b 0,0,1,0,1,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 7, 10, 2           ;Z
   Data.b 1,1,1,1,1,1,1
   Data.b 0,0,0,0,0,1,0
   Data.b 0,0,0,0,1,0,0
   Data.b 0,0,0,0,1,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,0,1,0,0,0
   Data.b 0,0,1,0,0,0,0
   Data.b 0,0,1,0,0,0,0
   Data.b 0,1,0,0,0,0,0
   Data.b 1,1,1,1,1,1,1
   ;Lower case letters
   Data.b 5, 7, 5           ;a
   Data.b 0,1,1,1,0
   Data.b 1,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 0,1,1,1,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,1,1
   Data.b 0,1,1,0,1
   Data.b 5, 10, 2          ;b
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,1,1,0
   Data.b 1,1,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,1,1,1,0
   Data.b 5, 7, 5           ;c
   Data.b 0,1,1,1,0
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,0 
   Data.b 5, 10, 2          ;d
   Data.b 0,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 0,1,1,0,1
   Data.b 1,0,0,1,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,1 
   Data.b 5, 7, 5           ;e
   Data.b 0,1,1,1,0
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,1,1,1,1
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,0
   Data.b 4, 10, 2          ;f
   Data.b 0,0,1,1
   Data.b 0,1,0,0
   Data.b 0,1,0,0
   Data.b 1,1,1,0
   Data.b 0,1,0,0
   Data.b 0,1,0,0
   Data.b 0,1,0,0
   Data.b 0,1,0,0
   Data.b 0,1,0,0
   Data.b 0,1,0,0
   Data.b 5, 10, 5           ;g
   Data.b 0,1,1,0,1
   Data.b 1,0,0,1,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,1,1
   Data.b 0,1,1,0,1
   Data.b 0,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,0
   Data.b 5, 10, 2          ;h
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,1,1,0
   Data.b 1,1,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1, 10, 2           ;i
   Data.b 1
   Data.b 0
   Data.b 0
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 3, 13, 2           ;j
   Data.b 0,0,1
   Data.b 0,0,0
   Data.b 0,0,0
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 0,0,1
   Data.b 1,1,0
   Data.b 5, 10, 2          ;k
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,1
   Data.b 1,0,0,1,0
   Data.b 1,0,1,0,0
   Data.b 1,1,1,0,0
   Data.b 1,0,0,1,0
   Data.b 1,0,0,1,0
   Data.b 1,0,0,0,1
   Data.b 1, 10, 2           ;l
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 1
   Data.b 9, 7, 5           ;m
   Data.b 1,0,1,1,0,0,1,1,0
   Data.b 1,1,0,0,1,1,0,0,1
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 5, 7, 5           ;n
   Data.b 1,0,1,1,0
   Data.b 1,1,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 5, 7, 5           ;o
   Data.b 0,1,1,1,0
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,0
   Data.b 5, 10, 5           ;p
   Data.b 1,0,1,1,0
   Data.b 1,1,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,1,0,0,1
   Data.b 1,0,1,1,0
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,0 
   Data.b 5, 10, 5           ;q
   Data.b 0,1,1,0,1
   Data.b 1,0,0,1,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,1,1
   Data.b 0,1,1,0,1
   Data.b 0,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,0,0,0,1
   Data.b 3, 7, 5           ;r
   Data.b 1,0,1
   Data.b 1,1,0
   Data.b 1,0,0
   Data.b 1,0,0
   Data.b 1,0,0
   Data.b 1,0,0
   Data.b 1,0,0
   Data.b 5, 7, 5           ;s
   Data.b 0,1,1,1,0
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,0
   Data.b 0,1,1,1,0
   Data.b 0,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,0
   Data.b 3, 9, 3          ;t
   Data.b 0,1,0
   Data.b 0,1,0
   Data.b 1,1,1
   Data.b 0,1,0
   Data.b 0,1,0
   Data.b 0,1,0
   Data.b 0,1,0
   Data.b 0,1,0
   Data.b 0,1,1
   Data.b 5, 7, 5           ;u
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,1
   Data.b 5, 7, 5           ;v
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,0,1,0
   Data.b 0,1,0,1,0
   Data.b 0,1,0,1,0
   Data.b 0,0,1,0,0
   Data.b 0,0,1,0,0
   Data.b 9, 7, 5           ;w
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 1,0,0,0,1,0,0,0,1
   Data.b 0,1,0,1,0,1,0,1,0
   Data.b 0,1,0,1,0,1,0,1,0
   Data.b 0,1,0,1,0,1,0,1,0
   Data.b 0,0,1,0,0,0,1,0,0
   Data.b 0,0,1,0,0,0,1,0,0
   Data.b 5, 7, 5           ;x
   Data.b 1,0,0,0,1
   Data.b 0,1,0,1,0
   Data.b 0,1,0,1,0
   Data.b 0,0,1,0,0
   Data.b 0,1,0,1,0
   Data.b 0,1,0,1,0
   Data.b 1,0,0,0,1
   Data.b 5, 10, 5           ;y
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,0,1,0
   Data.b 0,1,0,1,0
   Data.b 0,1,0,1,0
   Data.b 0,0,1,0,0
   Data.b 0,0,1,0,0
   Data.b 0,0,1,0,0
   Data.b 0,0,1,0,0
   Data.b 1,1,0,0,0
   Data.b 5, 7, 5           ;z
   Data.b 1,1,1,1,1
   Data.b 0,0,0,1,0
   Data.b 0,0,0,1,0
   Data.b 0,0,1,0,0
   Data.b 0,1,0,0,0
   Data.b 0,1,0,0,0
   Data.b 1,1,1,1,1
   ;French accented characters
   Data.b 5, 10, 2           ;é
   Data.b 0,0,0,1,0
   Data.b 0,0,1,0,0
   Data.b 0,0,0,0,0
   Data.b 0,1,1,1,0
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,1,1,1,1
   Data.b 1,0,0,0,0
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,0
   Data.b 5, 10, 2           ;u
   Data.b 0,0,1,0,0
   Data.b 0,1,0,1,0
   Data.b 0,0,0,0,0
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 1,0,0,0,1
   Data.b 0,1,1,1,1
EndDataSection ;<

; <<<<<<<<<<<<<<<<<<<<<<<<
; <<<< FIN DU FICHIER <<<<
; <<<<<<<<<<<<<<<<<<<<<<<<
Fichier 3 : DigitalClock - Procedures.pb

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Digital clock
; Fichier : DigitalClock - Procedures.pb
; Date : 01-10-2003
; Mise à jour : 17-06-2006
; Codé avec PureBasic V4.00
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure GetTime(*ObjetA.DigitalClock)
   ;Stores local time. Program ends if a key is pushed or mouse moved
   GetLocalTime_(GetDigitalClockLocalTime(*ObjetA)) 
   ExamineKeyboard() : ExamineMouse()
   If KeyboardPushed(#PB_Key_All) Or MouseDeltaX() <> 0 Or MouseDeltaY() <> 0 : End : EndIf
EndProcedure 

Procedure DispTwinNum(hms.w, Pos.w, *ObjetA.DigitalClock)
   ;Display HH or MM or SS numbers
   LedNum1.w = hms / 10
   LedNum2.w = hms - (LedNum1 * 10)
   Xpos.w = GetDigitalClockXNumPos(*ObjetA) + Pos
   If LedNum1 = 0 : LedNum1 = 10 : EndIf
   If LedNum2 = 0 : LedNum2 = 10 : EndIf
   DisplaySprite(LedNum1, Xpos, GetDigitalClockYNumPos(*ObjetA))
   DisplaySprite(LedNum2, Xpos + 50, GetDigitalClockYNumPos(*ObjetA)) 
EndProcedure

Procedure DispNums(*ObjetA.DigitalClock) 
   ;Displays clock numbers
   DispTwinNum(GetDigitalClockSecondFlag(*ObjetA), 240, *ObjetA)
   DispTwinNum(GetLtimewMinute(GetDigitalClockLocalTime(*ObjetA)), 120, *ObjetA)
   DispTwinNum(GetLtimewHour(GetDigitalClockLocalTime(*ObjetA)), 0, *ObjetA)
EndProcedure

Procedure BlinkLed(OnOff.b, *ObjetA.DigitalClock)
   ;Displays blinking led. OnOff = LED on or LED off sprite number
   DisplaySprite(OnOff, GetDigitalClockXNumPos(*ObjetA) + 222, GetDigitalClockYNumPos(*ObjetA) + 20)
   DisplaySprite(OnOff, GetDigitalClockXNumPos(*ObjetA) + 222, GetDigitalClockYNumPos(*ObjetA) + 50)
   DisplaySprite(OnOff, GetDigitalClockXNumPos(*ObjetA) + 102, GetDigitalClockYNumPos(*ObjetA) + 20)
   DisplaySprite(OnOff, GetDigitalClockXNumPos(*ObjetA) + 102, GetDigitalClockYNumPos(*ObjetA) + 50)
EndProcedure  

Procedure DisplayCircleLED(LEDnum.w, LEDsprite.b, *ObjetA.DigitalClock) 
   Rad.f = (6 * LEDnum) * (#PI / 180) 
   For Index = 0 To 36 Step 18 
      x.f = GetDigitalClockXcircle(*ObjetA) + (GetDigitalClockRcircle(*ObjetA) + Index) * Sin(Rad)
      y.f = GetDigitalClockYcircle(*ObjetA) - (GetDigitalClockRcircle(*ObjetA) + Index) * Cos(Rad)
      DisplaySprite(LEDsprite, x, y) 
   Next
EndProcedure

Procedure CircleLed(*ObjetA.DigitalClock)
   ; Display a circle LED every other second
   ; If second = 0 remove previous LEDs And display 5-second LEDs
   j.w = GetLtimewSecond(GetDigitalClockLocalTime(*ObjetA))
   If j = 0
      For i.w = 1 To 59
         DisplayCircleLED(i,14,*ObjetA)
      Next i
      For i = 0 To 59 Step 5
         DisplayCircleLED(i, 16,*ObjetA)
      Next i
   EndIf
   ; Display mormal or superimposed LED  
   ; INT function doesn't work properly
   CircleJ.f = (j/5)*10                  
   CircleK.s = Right(Str(CircleJ), 1) 
   If CircleK <> "0" And CircleK <> "5"
      DisplayCircleLED(j, 13, *ObjetA)
   Else  
      DisplayCircleLED(j, 15, *ObjetA)
   EndIf   
EndProcedure

Procedure DispString(*ObjetA.DigitalClock)
   ;Display the date string
   If GetLtimewDayOfWeek(GetDigitalClockLocalTime(*ObjetA)) <> GetDigitalClockDayFlag(*ObjetA)
      SetDigitalClockDayFlag(*ObjetA, GetLtimewDayOfWeek(GetDigitalClockLocalTime(*ObjetA)))
      For k = 1 To 2   ;Fill both buffers 
         If GetDigitalClockDateVersion(*ObjetA) = 1  ; [Day DD MM YY]
            Dstring.s = GetDigitalClockDayWeek(*ObjetA, GetDigitalClockDayFlag(*ObjetA)) + " " 
            Dstring + Str(GetLtimewDay(GetDigitalClockLocalTime(*ObjetA))) + " " 
            Dstring + GetDigitalClockMMonth(*ObjetA, GetLtimewMonth(GetDigitalClockLocalTime(*ObjetA))) + " " 
            Dstring + Str(GetLtimewYear(GetDigitalClockLocalTime(*ObjetA))) 
         Else ; [Day, MM DD, YY]  
            Dstring.s = GetDigitalClockDayWeek(*ObjetA, GetDigitalClockDayFlag(*ObjetA)) + ", " 
            Dstring + GetDigitalClockMMonth(*ObjetA, GetLtimewMonth(GetDigitalClockLocalTime(*ObjetA)))  + " " 
            Dstring + Str(GetLtimewDay(GetDigitalClockLocalTime(*ObjetA))) + ", " 
            Dstring + Str(GetLtimewYear(GetDigitalClockLocalTime(*ObjetA)))
         EndIf  
         LenString = 0
         ;Evaluates string length in pixels
         For i = 1 To Len(Dstring)
            LenString = LenString + GetDigitalClockCharWidth(*ObjetA, Asc(Mid(Dstring, i, 1))) + 4
         Next i 
         CharPos = GetDigitalClockXcircle(*ObjetA) - (LenString / 2)
         For i = 1 To Len(Dstring)
            j = Asc(Mid(Dstring, i, 1))
            DisplaySprite(j, CharPos, GetDigitalClockYtext(*ObjetA))
            CharPos = CharPos + GetDigitalClockCharWidth(*ObjetA, j) + 4
         Next i
         FlipBuffers()
      Next k  
   EndIf  
EndProcedure 

Procedure CharSprite(CharNum, *ObjetA.DigitalClock) 
   ; Creates one Character sprite
   ; Uses successive information stored in Data section
   Read CharWidth.b
   Read CharHeight.b
   Read StartLine.b 
   SetDigitalClockCharWidth(*ObjetA, CharNum,CharWidth * 4)
   CreateSprite(CharNum, CharWidth * 4, 75)  
   StartDrawing(SpriteOutput(CharNum)) ;>  
      FrontColor(GetDigitalClockCharColor(*ObjetA))
      For j = StartLine To StartLine + CharHeight - 1               
         For k = 0 To CharWidth - 1  
            Read l.b
            If l = 1
               Box(k * 4, j * 4, 3, 3)  ;Could be replaced with circles
            EndIf
         Next k
      Next j
   StopDrawing() ;<
EndProcedure 

Procedure InitCharFont(*ObjetA.DigitalClock)
   ;Creates date character sprites (ASCII codes)
   CharSprite(32, *ObjetA)                         ;Creates Space sprite
   CharSprite(44, *ObjetA)                         ;Comma
   For i = 48 To 57                      ;Numbers
      CharSprite(i, *ObjetA)
   Next i
   For i = 65 To 90                      ;Upper case letters
      CharSprite(i, *ObjetA)  
   Next i
   For i = 97 To 122                     ;Lower case letters
      CharSprite(i, *ObjetA)  
   Next i
   ;Local characters can be added here for each particular language
   CharSprite(233, *ObjetA)                        ;French é
   CharSprite(251, *ObjetA)  ;French û
EndProcedure  

Procedure EError(ErrorMessage.s)
   ;DirectX errors
   MessageRequester("Error", ErrorMessage, 0) : End
EndProcedure  

Procedure InitDigitalClockScreen(*ObjetA.DigitalClock)
   ;Sprite, keyboard and display init
   If InitSprite() = 0
      EError("Error: DirectX 7 Or above is needed")
   ElseIf InitKeyboard() = 0
      EError("Keyboard management error")
   ElseIf InitMouse() = 0
      EError("Mouse management error")
   ElseIf OpenScreen(GetDigitalClockScreenW(*ObjetA), GetDigitalClockScreenH(*ObjetA), 32,"DigitalClock") = 0
      EError("Unable To open screen")
   EndIf
EndProcedure  

Procedure InitLEDdiodes(*ObjetA.DigitalClock)
   ;Creates LEDs diodes sprites
   ;Blinking led  (could be probably easier with a circle command)
   CreateSprite(11, 9, 9)
   StartDrawing(SpriteOutput(11));>  
      FrontColor(GetDigitalClockBlinkLEDcolor(*ObjetA))
      BackColor(0)                  
      LineXY(0, 2, 2, 0)
      LineXY(2, 0, 6, 0)
      LineXY(6, 0, 8, 2)
      LineXY(8, 2, 8, 6)
      LineXY(8, 6, 6, 8)
      LineXY(6, 8, 2, 8)
      LineXY(2, 8, 0, 6)
      LineXY(0, 6, 0, 2)
      FillArea(3, 1, GetDigitalClockBlinkLEDcolor(*ObjetA))             
      FrontColor(GetDigitalClockWhiteColor(*ObjetA))
      LineXY(3, 2, 4, 2)
      LineXY(2, 3, 3, 3)
   StopDrawing();<
   ;Black led
   CreateSprite(12, 9, 9)
   ;Circle Led 1  (seconds)
   CreateSprite(13, 12, 12)
   StartDrawing(SpriteOutput(13));>    
      Circle(6, 6, 6, GetDigitalClockSecondLEDcolor(*ObjetA)) 
      Box(2, 3, 3, 3, GetDigitalClockWhiteColor(*ObjetA))  
   StopDrawing();<
   ;Black circle led
   CreateSprite(14, 12, 12)
   ;Circle Led 2 (5-second start)
   CreateSprite(15, 12, 12)
   StartDrawing(SpriteOutput(15)) ;>         
      Circle(6, 6, 6, GetDigitalClockFiveSecLEDcolor1(*ObjetA)) 
      Box(2, 3, 3, 3, GetDigitalClockWhiteColor(*ObjetA)) 
   StopDrawing() ;< 
   ;Circle Led 3 (5-second superimposition)
   CreateSprite(16, 12, 12)
   StartDrawing(SpriteOutput(16)) ;>             
      Circle(6, 6, 6, GetDigitalClockFiveSecLEDcolor2(*ObjetA)) 
      Box(2, 3, 3, 3, GetDigitalClockWhiteColor(*ObjetA)) 
   StopDrawing() ;<
EndProcedure  

Procedure InitLEDnumbers(*ObjetA.DigitalClock)
   ;Create Led numbers
   ;Start with Number 8 - All the segments are On
   CreateSprite(8, 43, 79)
   StartDrawing(SpriteOutput(8)) ;>
      FrontColor(GetDigitalClockSegmentOn(*ObjetA))
      BackColor(0)    
      LineXY(0, 5, 5, 0)          ;External boundary
      LineXY(5, 0, 37, 0)
      LineXY(37, 0, 42, 5)
      LineXY(42, 5, 42, 34)
      LineXY(42, 34, 37, 39)
      LineXY(37, 39, 42, 44)
      LineXY(42, 44, 42, 73)
      LineXY(42, 73, 37, 78)
      LineXY(37, 78, 5, 78)
      LineXY(5, 78, 0, 73)
      LineXY(0, 73, 0, 44)
      LineXY(0, 44, 5, 39)
      LineXY(5, 39, 0, 34)
      LineXY(0, 34, 0, 5)
      LineXY(8, 8, 34, 8)         ;Internal boundary
      LineXY(34, 8, 34, 35)
      LineXY(34, 35, 8, 35)
      LineXY(8, 35, 8, 8)
      LineXY(8, 43, 34, 43)
      LineXY(34, 43, 34, 70)
      LineXY(34, 70, 8, 70)
      LineXY(8, 70, 8, 43)
      FillArea(6, 1, GetDigitalClockSegmentOn(*ObjetA))     ;Paints the number
      FrontColor(0)                    ;Draw LED separating lines
      LineXY(2, 2, 9, 9)
      LineXY(40, 2, 33, 9)
      LineXY(9, 34, 4, 39)
      LineXY(4, 39, 9, 44)
      LineXY(9, 69, 2, 76)
      LineXY(33, 69, 40, 76)
      LineXY(33, 44, 38, 39)
      LineXY(38, 39, 33, 34)                  
   StopDrawing();<
   ;Number 2
   ;Then delete all unused segments in other numbers
   CopySprite(8, 2)
   StartDrawing(SpriteOutput(2)) ;>
      ;Paint the black segments
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))                     ;
      FillArea(2, 3, 0)             
      FillArea(37, 41, 0)             
   StopDrawing();<
   CopySprite(8, 3)                          ;3  
   StartDrawing(SpriteOutput(3));>          
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))                  
      FillArea(2, 3, 0)             
      FillArea(3, 41, 0)             
   StopDrawing();<
   CopySprite(8, 4)                          ;4  
   StartDrawing(SpriteOutput(4)) ;>           
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))
      FillArea(5, 0, 0)             
      FillArea(3, 41,0)             
      FillArea(9, 70, 0)             
   StopDrawing();<
   CopySprite(8, 5)                          ;5  
   StartDrawing(SpriteOutput(5)) ;>         
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))
      FillArea(40, 3, 0)             
      FillArea(4, 40, 0)             
   StopDrawing() ;<
   CopySprite(8, 6)                          ;6  
   StartDrawing(SpriteOutput(6)) ;>             
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))
      FillArea(40, 3, 0)             
   StopDrawing() ;<
   CopySprite(3, 7)                          ;7  
   StartDrawing(SpriteOutput(7))  ;>          
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))                 
      FillArea(2, 3, GetDigitalClockSegmentOff(*ObjetA))             
      FillArea(3, 41, 0)             
      FillArea(9, 35, 0)             
      FillArea(9, 70, 0)             
   StopDrawing() ;<
   CopySprite(7, 1)                          ;1  
   StartDrawing(SpriteOutput(1)) ;>          
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))                 
      FillArea(5, 0, 0)             
   StopDrawing() ;<
   CopySprite(8, 9)                          ;9  
   StartDrawing(SpriteOutput(9)) ;>           
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))
      FillArea(3, 41, 0)             
   StopDrawing() ;<
   CopySprite(8, 10)                         ;0  
   StartDrawing(SpriteOutput(10)) ;>           
      FrontColor(GetDigitalClockSegmentOff(*ObjetA))
      FillArea(9, 35, 0)             
   StopDrawing() ;<
EndProcedure 

Procedure RunDigitalClock(*ObjetA.DigitalClock)
   Repeat
      GetTime(*ObjetA)
      If GetLtimewSecond(GetDigitalClockLocalTime(*ObjetA)) <> GetDigitalClockSecondFlag(*ObjetA)
         SetDigitalClockSecondFlag(*ObjetA, GetLtimewSecond(GetDigitalClockLocalTime(*ObjetA)))
         ; Display clock segment numbers
         DispNums(*ObjetA)                 
         BlinkLed(11, *ObjetA) ; Blinking led ON
         CircleLed(*ObjetA)    ; Display circle LED
         DispString(*ObjetA)   ; Display date string
         FlipBuffers()
         DispNums(*ObjetA)
         BlinkLed(12,*ObjetA)  ; Blinking led OFF
         CircleLed(*ObjetA)
         DispString(*ObjetA)
         While GetLtimewMilliseconds(GetDigitalClockLocalTime(*ObjetA)) < #BlinkDelay
            GetTime(*ObjetA)
         Wend  
         ; Flip to the second buffer when blinking LED time elapsed
         FlipBuffers()   
      EndIf
   Until 0    ; infinite loop - Until forever doesn't work
   End 
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<
; <<<< FIN DU FICHIER <<<<
; <<<<<<<<<<<<<<<<<<<<<<<<
Fichier 4 : DigitalClock - Main.pb

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Digital clock
; Fichier : Source principal
; Version : 2.0.0
; Programmation = OK
; Programmé par : Sylvain Bizoirre (France)
; Modifié par : Guimauve
; Date : 01-10-2003
; Mise à jour : 17-06-2006
; Codé avec PureBasic V4.00
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

IncludeFile "DigitalClock - DigitalClock object.pb"
IncludeFile "DigitalClock - Constants.pb"
IncludeFile "DigitalClock - Procedures.pb"

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Init DirectX, sprites, keyboard, mouse

InitDigitalClockScreen(DigitalClock)  

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Create clock segment numbers

InitLEDnumbers(DigitalClock)

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Create various diode LEDs 

InitLEDdiodes(DigitalClock)              

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Creates date character sprites

InitCharFont(DigitalClock)                          

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Run Digital Clock on the screen

RunDigitalClock(DigitalClock)

; <<<<<<<<<<<<<<<<<<<<<<<<
; <<<< FIN DU FICHIER <<<<
; <<<<<<<<<<<<<<<<<<<<<<<<
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Essayé, mais il se passe rien!
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Génial cette horloge digitale :D

@nico : peut-être bouges-tu ta souris or, le fait de la bouger arrête le programme !
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

C'est nickel !! :P

Faudrais mettre sa en écran de veille...
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

très sympa :D
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Sympa :)
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

nico a écrit :Essayé, mais il se passe rien!
Oui, c'est comme flaith l'a dit, au moindre mouvement de la souris ou n'importe quel touche du clavier, tout s'arrète.

J'aurais du le mentionner au début. :roll:

Désolé.
nico a écrit :Sympa
Droopy a écrit :très sympa
C'est pour ça que je redonne le source. Cela dit il y aurait des modifications à faire pour le transformer en écran de veille. Je vais peut-être le faire mais je ne sais pas quand ce sera terminé.

Parcontre, il est possible de l'utiliser comme écran de veille en compilant le code comme DigitalClock.exe, renommer le fichier DigitalClock.scr, copier le fichier dans le répertoire système 32 et de le sélectionner comme écran de veille. Bien sur, pas de preview ou d'ajustement des couleurs, etc mais l'horloge va s'afficher sans problème.

Et surtout un grand merci à l'auteur du code original. S'il passe dans le coin. :wink:

A+
Guimauve
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Nouvelle version du code source disponible en téléchargement.

Comme toujours le code est programmé avec le style de programmation basé objet (PBO).

Pour ceux qui pourrait être intéressé, les ajustements en Anglais sont présents dans
le code mais en commentaire. Voir la procédure InitDigitalClock() pour les détails.

Aussi au moindre mouvement de la souris ou n'importe quel touche du clavier, tout s'arrète.

[EDIT] Dans le code Include "DigitalClock - Starfield Object.pb"

Dans la procedure DrawStarField(*StarFieldA.StarField) il faut remplacer la macro RGBColor() par RGB() pour que ça compile. Si j'ai du temps ce soir je vais uploader une version corriger du source.

A+
Guimauve

File:1->DigitalClock.zip
Image
lewkey
Messages : 45
Inscription : jeu. 26/avr./2007 20:39

Message par lewkey »

bravo pour ce superbe petit programme, on doit pouvoir facilement s'en servir comme écran de veille!!!

(mais je pense que j'enlèverai les étoiles : ça prendra moins de processeur!!!)
Répondre