Horloge digital (Version 2)
Publié : dim. 18/juin/2006 12:25
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
Fichier 2 : DigitalClock - Constants.pb
Fichier 3 : DigitalClock - Procedures.pb
Fichier 4 : DigitalClock - Main.pb
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 <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
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 <<<<
; <<<<<<<<<<<<<<<<<<<<<<<<
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 <<<<
; <<<<<<<<<<<<<<<<<<<<<<<<
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 <<<<
; <<<<<<<<<<<<<<<<<<<<<<<<