;{ Константы
Enumeration
#Window_0
EndEnumeration
;- MenuBar Constants
;
Enumeration
#MenuBar_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Image_0
#Image_1
#Text_0
#Text_1
#Text_2
#Text_3
#String_0
EndEnumeration
;}
;{ Переменные
Structure MyColor
En.s
Rus.s
R.l
G.l
B.l
EndStructure
Global Dim Red_colors.MyColor(15)
Global Dim Pink_colors.MyColor(15)
Global Dim Orange_colors.MyColor(5)
Global Dim Yellow_colors.MyColor(10)
Global Dim Brown_colors.MyColor(16)
Global Dim Green_colors.MyColor(22)
Global Dim Blue_colors.MyColor(24)
Global Dim Purple_colors.MyColor(16)
Global Dim White_colors.MyColor(16)
Global Dim Grey_colors.MyColor(9)
;}
Procedure Color() ; присваиваем значения переменным строковых массивов...
;{ Red_colors
Red_colors(0)\En="Dark Red"
Red_colors(0)\Rus="Темно-красный"
Red_colors(0)\R=139
Red_colors(0)\G=0
Red_colors(0)\B=0
Red_colors(1)\En="Carmine"
Red_colors(1)\Rus="Карминово-красный"
Red_colors(1)\R=150
Red_colors(1)\G=0
Red_colors(1)\B=24
Red_colors(2)\En="Fire Brick"
Red_colors(2)\Rus="Огненно кирпичный"
Red_colors(2)\R=178
Red_colors(2)\G=34
Red_colors(2)\B=34
Red_colors(3)\En="Cardinal"
Red_colors(3)\Rus="Тёмно-красный, кардинал"
Red_colors(3)\R=196
Red_colors(3)\G=30
Red_colors(3)\B=58
Red_colors(4)\En="Crimson"
Red_colors(4)\Rus="Тёмно-красный, кровавый, кармазин"
Red_colors(4)\R=220
Red_colors(4)\G=20
Red_colors(4)\B=60
Red_colors(5)\En="Alizarin Crimson"
Red_colors(5)\Rus="Ализариновый красный"
Red_colors(5)\R=227
Red_colors(5)\G=38
Red_colors(5)\B=54
Red_colors(6)\En="Red"
Red_colors(6)\Rus="Красный"
Red_colors(6)\R=255
Red_colors(6)\G=0
Red_colors(6)\B=0
Red_colors(7)\En="Scarlet"
Red_colors(7)\Rus="Ярко-красный, алый"
Red_colors(7)\R=255
Red_colors(7)\G=36
Red_colors(7)\B=0
Red_colors(8)\En="Vermilion"
Red_colors(8)\Rus="Киноварь, ср. киноварь"
Red_colors(8)\R=255
Red_colors(8)\G=77
Red_colors(8)\B=0
Red_colors(9)\En="Titian"
Red_colors(9)\Rus="Тициановый"
Red_colors(9)\R=213
Red_colors(9)\G=62
Red_colors(9)\B=7
Red_colors(10)\En="Tenne"
Red_colors(10)\Rus="Краснобуро-оранжевый"
Red_colors(10)\R=205
Red_colors(10)\G=87
Red_colors(10)\B=0
Red_colors(11)\En="Indian red"
Red_colors(11)\Rus="Индейский красный"
Red_colors(11)\R=205
Red_colors(11)\G=92
Red_colors(11)\B=92
Red_colors(12)\En="Light Coral"
Red_colors(12)\Rus="Светло коралловым"
Red_colors(12)\R=240
Red_colors(12)\G=128
Red_colors(12)\B=128
Red_colors(13)\En="Salmon"
Red_colors(13)\Rus="Лососёвый"
Red_colors(13)\R=250
Red_colors(13)\G=128
Red_colors(13)\B=114
Red_colors(14)\En="Dark salmon"
Red_colors(14)\Rus="Тёмно лососёвый"
Red_colors(14)\R=233
Red_colors(14)\G=150
Red_colors(14)\B=122
Red_colors(15)\En="Light Salmon"
Red_colors(15)\Rus="Светло лососёвый"
Red_colors(15)\R=255
Red_colors(15)\G=160
Red_colors(15)\B=122
;}
;{ Pink_colors
Pink_colors(0)\En="Medium Violet Red"
Pink_colors(0)\Rus="Средний Красно-Фиолетовый"
Pink_colors(0)\R=199
Pink_colors(0)\G=21
Pink_colors(0)\B=133
Pink_colors(1)\En="Deep Pink"
Pink_colors(1)\Rus="Насыщенный розовый"
Pink_colors(1)\R=255
Pink_colors(1)\G=20
Pink_colors(1)\B=147
Pink_colors(2)\En="Hot Pink"
Pink_colors(2)\Rus="Ярко-розовый"
Pink_colors(2)\R=255
Pink_colors(2)\G=105
Pink_colors(2)\B=180
Pink_colors(3)\En="Pale Violet Red"
Pink_colors(3)\Rus="Бледно фиолетово-красный"
Pink_colors(3)\R=219
Pink_colors(3)\G=112
Pink_colors(3)\B=147
Pink_colors(4)\En="Light Pink"
Pink_colors(4)\Rus="Светло-розовый"
Pink_colors(4)\R=255
Pink_colors(4)\G=182
Pink_colors(4)\B=193
Pink_colors(5)\En="Pink"
Pink_colors(5)\Rus="Розовый"
Pink_colors(5)\R=255
Pink_colors(5)\G=192
Pink_colors(5)\B=203
Pink_colors(6)\En="Pale pink"
Pink_colors(6)\Rus="Бледно-розовый"
Pink_colors(6)\R=250
Pink_colors(6)\G=218
Pink_colors(6)\B=221
Pink_colors(7)\En="Pastel pink"
Pink_colors(7)\Rus="Пастельно-розовый"
Pink_colors(7)\R=255
Pink_colors(7)\G=209
Pink_colors(7)\B=220
Pink_colors(8)\En="Pale magenta"
Pink_colors(8)\Rus="Бледно-пурпурный"
Pink_colors(8)\R=249
Pink_colors(8)\G=132
Pink_colors(8)\B=229
Pink_colors(9)\En="Orchid"
Pink_colors(9)\Rus="Орхидея"
Pink_colors(9)\R=218
Pink_colors(9)\G=112
Pink_colors(9)\B=214
Pink_colors(10)\En="Wisteria"
Pink_colors(10)\Rus="Глициния"
Pink_colors(10)\R=201
Pink_colors(10)\G=160
Pink_colors(10)\B=220
Pink_colors(11)\En="Magenta"
Pink_colors(11)\Rus="Малиновый, фуксия"
Pink_colors(11)\R=255
Pink_colors(11)\G=0
Pink_colors(11)\B=255
Pink_colors(12)\En="Thistle"
Pink_colors(12)\Rus="Чертополох"
Pink_colors(12)\R=216
Pink_colors(12)\G=191
Pink_colors(12)\B=216
Pink_colors(13)\En="Pale red-violet"
Pink_colors(13)\Rus="Лиловый"
Pink_colors(13)\R=219
Pink_colors(13)\G=112
Pink_colors(13)\B=147
Pink_colors(14)\En="Heliotrope"
Pink_colors(14)\Rus="Гелиотроп"
Pink_colors(14)\R=223
Pink_colors(14)\G=115
Pink_colors(14)\B=255
Pink_colors(15)\En="Dark pink"
Pink_colors(15)\Rus="Тёмно-розовый"
Pink_colors(15)\R=231
Pink_colors(15)\G=84
Pink_colors(15)\B=128
;}
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 1, 1024, 500, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateMenu(#MenuBar_0, WindowID(#Window_0))
MenuItem(1,"Красные")
;MenuTitle("Красные")
;MenuTitle("Розовые")
MenuItem(2,"Розовые")
MenuTitle("Оранжевые")
MenuTitle("Жёлтые")
MenuTitle("Коричневые")
MenuTitle("Зелёные")
MenuTitle("Синие")
MenuTitle("Фиолетовые")
MenuTitle("Белые")
MenuTitle("Серые")
EndIf
If CreateGadgetList(WindowID(#Window_0))
CreateImage(#Image_0,730,380)
ImageGadget(#Image_0, 10, 20, 730, 380, 0, #PB_Image_Border)
CreateImage(#Image_1,290,200)
ImageGadget(#Image_1,755, 20, 260, 200, 0, #PB_Image_Border)
TextGadget(#Text_0, 760, 240, 270, 30, "Рус.:")
SetGadgetFont(#Text_0, FontID1)
TextGadget(#Text_1, 760, 290, 270, 30, "Eng.:")
SetGadgetFont(#Text_1, FontID1)
TextGadget(#Text_2, 760, 340, 270, 30, "RGB:")
SetGadgetFont(#Text_2, FontID1)
TextGadget(#Text_3, 760, 390, 270, 30, "BGR:")
SetGadgetFont(#Text_3, FontID1)
StringGadget(#String_0, 10, 440, 440, 30, "Введите название цвета:")
SetGadgetFont(#String_0, FontID1)
EndIf
EndIf
EndProcedure
Procedure Palitra_clean () ; Создает пустые круги палитры
If StartDrawing(ImageOutput(#Image_0))
Box(0, 0, 730, 380, RGB(255,218,185))
Circle(182, 190, 180, RGB(0,0,0))
Circle(182, 190, 178, RGB(255,255,255))
Circle(544, 190, 180, RGB(0,0,0))
Circle(544, 190, 178, RGB(255,255,255))
StopDrawing()
EndIf
SetGadgetState(#Image_0,ImageID(#Image_0))
EndProcedure
Procedure Palitra (Number,Array MyArray.MyColor(1)) ; Создает палитру в зависимости от выбраной категории цвета
For a=0 To Number-1
If StartDrawing(ImageOutput(#Image_0))
LineXY(182, 190, 182+Cos(360/Number*a*#PI/180)*178, 190+Sin(360/Number*a*#PI/180)*178, RGB(0,0,0))
FillArea(182+Cos((360/Number*a+2)*#PI/180)*175, 190+Sin((360/Number*a+2)*#PI/180)*175,-1, RGB( MyArray(a)\R,MyArray(a)\G,MyArray(a)\B))
Circle(544, 190, 180-a*(180/Number), RGB( MyArray(a)\R,MyArray(a)\G,MyArray(a)\B))
StopDrawing()
EndIf
SetGadgetState(#Image_0,ImageID(#Image_0))
Next
EndProcedure
Procedure colar_P(r_g_b) ; Отображает "Кликнутый цвет" в гаджете сбоку
If StartDrawing(ImageOutput(#Image_1))
Box(0, 0, 290, 200, r_g_b)
StopDrawing()
EndIf
SetGadgetState(#Image_1,ImageID(#Image_1))
EndProcedure
Procedure.s Perevod(color) ; Переводит число цвета из 10-ной системы в 16-ричную...
For b=1 To 2
a=Color%16
ostat.s=Str(a)
If a=10
ostat="A"
ElseIf a=11
ostat="B"
ElseIf a=12
ostat="C"
ElseIf a=13
ostat="D"
ElseIf a=14
ostat="E"
ElseIf a=15
ostat="F"
EndIf
Color=Int(Color/16)
S.s=ostat+S
Next
ProcedureReturn S
EndProcedure
Procedure name_color(Number,Array MyArray.MyColor(1)); Определяет название цвета и его отображение в гаджете
StartDrawing(ImageOutput(Gadget))
Cvet = Point(WindowMouseX(#Window_0)-10, WindowMouseY(#Window_0)-20)
SetGadgetText(#Text_2,"RGB: ("+Str(Red(Cvet))+":"+Str(Green(Cvet))+":"+Str(Blue(Cvet))+")")
For a=0 To Number
If MyArray(a)\R=Red(Cvet) And MyArray(a)\G=Green(Cvet) And MyArray(a)\B=Blue(Cvet)
SetGadgetText(#Text_0,"Рус.: " + MyArray(a)\Rus)
SetGadgetText(#Text_1,"En.: " + MyArray(a)\En)
SetGadgetText(#Text_3,"BGR: " +"$"+ Perevod(Blue(Cvet)) + Perevod(Green(Cvet))+ Perevod(Red(Cvet)))
EndIf
Next
StopDrawing()
colar_P(RGB(Red(Cvet),Green(Cvet),Blue(Cvet)))
EndProcedure
Color()
Open_Window_0()
Repeat
event=WaitWindowEvent()
gadget=EventGadget()
menu = EventMenu()
If event=#PB_Event_Menu
Palitra_clean ()
;{ выбор пункта меню
If menu=1
;чтото=Red_colors() <= здесь какой-то переменной надо установить что выбирается Red_colors(),а потом эту "переменную" передать процедуре name_color() строка 396...
Number=15
Palitra(16,Red_colors())
ElseIf menu=2
; что-то=Pink_colors() <= здесь надо установить что выбирается Pink_colors(), а потом эту "переменную" передать процедуре name_color() строка 396...
Number=15
Palitra(16,Pink_colors())
EndIf
;}
ElseIf event=#PB_Event_Gadget
If gadget=#Image_0
name_color(Number,Pink_colors()) ;<= сюда вместо Pink_colors() надо передат тот строковый массив, который должен определяться при нажатии меню...
EndIf
EndIf
Until event=#PB_Event_CloseWindow