• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Farb Tool für Grafiker

udg

Neu angemeldet

Registriert
8 Feb. 2014
Beiträge
70
Hallo Grafiker.
Da ich selber auch programmiere und das richtige Tool nach meinen Wünschen nicht zu haben war,
habe ich ein Tool programmiert, dass mir bei meiner Arbeit sehr nützliche Dienste erweist. Besonders der Desktopübergreifende Color Picker :)


Vielleicht kann der Ein oder Andere es gebrauchen und nutzt es für seine Arbeit.

RGB to HEX Color Converter v7
englisch - für Windows XP, Vista, 7, 8, 10
32 und 64 Bit Systeme


changelog 03.04.2017:
- 2 Themes, "light" oder "dark" mit rechts klick auf den Header des Tools auswählbar
die theme.ini wird im Ordner: C:\Users\Username\AppData\Roaming\RGBTool gespeichert
- Wechsel zwischen normal- und kompakt- Modus möglich
- bei aktivem Color Picker kann über den Klick auf das Mausrad ein 8fach Zoom eingestellt werden

lightfull9asf9.png
darktfulltsso0.png

lightcompact9fsj0.png
darkcompactims44.png

magni_lighty0scg.png
magni_darkwxszp.png


Größe entpackt: 300 kb
Download: RGB 2 HEX Converter v7_2k17.rar

Info:

RGB 2 HEX Converter v3 2017 ist ein sehr nützlicher Farb Umrechner, der Web
Farb-Codes schnell in das gebrauchte Farbformat umwandelt.

RGB oder RGBa zu Web-HEX oder Web-HEX zu RGB bzw. RGBa...

Im oberen Teil, dem ersten Button: "Select Background Color" kann eine
Hintergrundfarbe gewählt werden, welche für den Button darunter die Basis bildet
um ein Designkontept zur Wahl der Schrift und Schriftfarbe zu bilden.


Versehe die ausgewählte Font mit einem Farbcode und erstell dein persönliches
Design. Vergleiche wie beide Farben miteinander harmonieren und verwende dein
Konzept auf Webseiten.


(Programmierer unter PureBasic)
Für die Farb-Code Verwendung unter PureBasic ist es möglich, sich den Wert
umrechnen zu lassen. Einfacher Klick auf den Button: "$", errechnet den Farb-Code
und kann sofort eingefügt werden.

----------------------------------------------------------------------------------


Beispiel:

Verwendung des oberen Teiles: Compare Background with Font Color


Standardmäßig wird ein Farbwert wie folgt angezeigt:

#988DC5 (Web Hex Code)
rgb(152,141,197) (Web RGB Farb-Code)

mit Klick auf den Button: "$" wird der PureBasic Farb-Code errechnet und
wie folgt angezeigt:

$C58D98 (PureBasic Farb-Code)
rgb(152,141,197) (dieser Wert bleibt unverändert da identisch)

mit Klick auf den Button: "#" wird wieder der Web Hex Code errechnet


-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------

Verwendung des mittleren Teiles: Convert Web Color from HEX to RGB or RGB to HEX


Dieser Teil des Programmes kann ausschließlich und explizit für das schnelle
Umwandeln von Web Farb-Codes verwendet werden.
Besitzt du also zB nur den RGB bzw RGBa Wert einer Farbe und brauchst diesen
als Web HEX Wert, fügst du einfach den Farbwert in das Eingabefeld ein und
drückst den Button, "Convert Color"

Beispiel:

rgb(152,141,197) einfügen -> "Convert Color" -> Ergebnis: #988DC5

#988DC5 einfügen -> "Convert Color" -> Ergebnis: rgb(152,141,197)

rgba(152,141,197,1.0) einfügen -> "Convert Color" -> Ergebnis: #988DC5
der Alpha Wert wird immer als 1 bewertet, auch wenn 0.5 angegeben ist

-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------


Verwendung des Teiles: Convert PureBasic Color to RGB (für Programmierer unter PureBasic)

Sollte zur besseren Übersicht der RGB Farb-Code eines PureBasic konformen
Farbwertes benötigt werden oder anderweitig notwendig sein, fügt man in das
Eingabefeld den PureBasic Farb-Code ein und drückt anschließend den Buton:
"Convert Color"

Beispiel:

$C58D98 einfügen -> "Convert Color" -> Ergebnis: RGB(152,141,197)


-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------


Das interessanteste Feature ist der "Color Picker" im unteren Teil des
Color Conversation Tool v3.

Sollte ein spezieller Farbwert aus einer Grafik oder Website oder einer bestimmten
Stelle auf dem Desktop benötigt werden, dann kommt dieses sehr nützliche Feature zum
Einsatz.

Zur besten Nutzung ist es vorteilhaft, die Checkbox "Always on Top" zu aktivieren

- dies bewirkt, das Color Conversation Tool v3 bleibt als Programm immer im
Vordergrund

- als nächstes die Checkbox: "Color Picker" aktivieren

- geh mit der Maus auf die gewünschte Stelle auf deinem Monitor und erfasse Pixelgenau
den RGB Farbwert mit Linksklick der Linken Maustaste.

Dies übermittelt den Farb-Code in das Eingabefeld und deaktiviert wieder die Checkbox
"color Picker", sodass der Farb Code nun weiter verwendet werden kann.


----------------------------------------------------------------
----------------------------------------------------------------

Programmierung: Inc & UDG @ Unknown Design Group
Idee und Konzeption: Inc @ Inc Design
Original Programmierung: Inc & Freefall
Copyright: 2014/ 2017


English:


RGB 2 HEX Converter v3 2017 // Color Conversation Tool v3

windows XP
Windows 7
Windows 10

32 und 64 Bit Systems



RGB 2 HEX Converter v3 2017 is a very useful and easy to use Color Converter for Web
color codes.

RGB or RGBa to Web-HEX or Web-HEX to RGB / RGBa


In the upper part, the first button: "Select Background Color", you can choose a
background color, which create the base for the second button below to build a Design Concept
for further use with a nice Font and its color.

Give your Font a nice color and create your personally design. Compare both color and if you're
satisfied, go ahead to use the concept in your project.


(for programmer with PureBasic)
For the color code use under PureBasic it is possible to get the value Converted. Just click on
the button: "$", calculates the color code and can be inserted immediately.

-----------------------------------------------------------------------------------------------


Example:

Use the upper part: Compare Background with Font Color

By default, a color value is displayed as follows:

#988DC5 (Web Hex Code)
rgb(152,141,197) (Web RGB Color-Code)

by clicking on the button: "$" the PureBasic color code is calculated as follows:


$C58D98 (PureBasic Color-Code)
rgb(152,141,197) (This value remains unchanged, it's identical)

by clicking on the button: "#" the web hex code is calculated again


-----------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------


Use the middle part: Convert Web Color from HEX to RGB or RGB to HEX


This part of the program can be used exclusive and explicit for the fast
Converting of web color codes.
So you have e.g. only the RGB or RGBa value of a color and need this as a Web HEX value,
simply add the color value to the input field and Press the button, "Convert Color"

Example:

rgb(152,141,197) insert -> "Convert Color" -> Result: #988DC5

#988DC5 insert -> "Convert Color" -> Result: rgb(152,141,197)

rgba(152,141,197,1.0) insert -> "Convert Color" -> Result: #988DC5
The alpha value is always valued as 1, even if 0.5 is specified


-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------


Use the middle part: Convert PureBasic Color to RGB

If for a better overview the RGB color code of a PureBasic compliant Color value are
required or otherwise necessary, insert the PureBasic color value into the input field.
then press the buton: "Convert Color"


Example:

$C58D98 insert -> "Convert Color" -> Result: RGB(152,141,197)


-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------


The most interesting feature is the "color picker" in the lower part of the
Color Conversation Tool v3.

Should be a specific color value needed from a graphic or website or a particular color
Site on the desktop, then comes this very useful feature to the
Commitment.

For best use it is advantageous to activate the "Always on Top" checkbox

- the tool now remain always on top

- now activate the Checkbox: "Color Picker"

- use the mouse to move to the desired location on your monitor and capture pixel accuracy
the RGB color value by left-clicking the left mouse button.

This sends the color code to the input field and deactivates the checkbox again
"Color picker" so that the color code can be reused.


----------------------------------------------------------------
----------------------------------------------------------------

Programmierung: Inc & UDG @ Unknown Design Group
Idee und Konzeption: Inc @ Inc Design
Original Programmierung: Inc & Freefall
Copyright: 2014/ 2017
 
Zuletzt bearbeitet:

udg

Neu angemeldet

Registriert
8 Feb. 2014
Beiträge
70
  • Thread Starter Thread Starter
  • #3
nun ja warum soll ich immer alles open source machen?
 

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Das legt die Hürden relativ hoch. Na ja, ist deine Entscheidung, aber ich kann es eben nicht nachvollziehen.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
Find ich ziemlich nett von dir/euch @udg, allerdings würde es mich auch ein wenig stören das der Source Code nicht verfügbar, so weiß ja kein Mensch was man sich auf den Rechner zieht ;)

Nicht zwingend böse gemeint, aber die Source mit zu veröffentlichen würde auch Sinn machen, auch das was phre4k anspricht und damit man mal darüber schauen kann was das Werkzeug wirklich macht, oder um zu lernen.... oder um selbst Feedback zu erhalten ob man etwas nicht verbessern kann.

Stell dir vor ich will jetzt zum Beispiel kein PureBasic Colorformat, aber vielleicht auch hm, SDL Color Angaben oder HSLA.... wenn nur die EXE beiligt, kann ich ja nichts erweitern (lassen).
Dann lieber noch eine Lizenz dazulegen, unter der das Programm veröffentlicht wird, die es erlaubt Modifikationen zu machen, aber das "Copyright" intakt zu lassen bzw. die Änderungen/Verbesserungen an euch zurück zu geben oder so etwas in der Art.

Und dann zum Beispiel Github als Versionskontrolle - das kann man auch mit Github für Windows, ohne jetzt Git Commandline zu lernen, wenn man das nicht mag/braucht.
Oder Gitlab oder ähnliches...

Und in 5 Jahren wirst du dich ärgern, wenn du mal den Source Code deines Programms verloren hast, weil du es nicht öffentlich zugänglich gemacht hast - extrem krass gesprochen - ist mir schon passiert.... war nur ne QBasic App, aber war trotzdem sehr schade... (für mich).
 
Zuletzt bearbeitet:

udg

Neu angemeldet

Registriert
8 Feb. 2014
Beiträge
70
  • Thread Starter Thread Starter
  • #8
Wenn du dir ein Programm heruntergeladen hast bekommst du doch auch nicht automatisch den SC dazu. Und was ein Programm letztendlich macht, wozu es gut ist, kann man in seiner Beschreibung lesen. Was mein Color Tool macht, kann genau in der beigefügten readme erlesen werden.

Wer Interesse oder Vorschläge hat, darf mich gern kontaktieren und dann wird drüber geschaut was man sinnvoller Weise hinzufügen könnte.

HSL bzw HSV zu integrieren ist eine Idee. Jedoch stell dir die entsprechende Formel nicht einfach vor. Es sei denn du hast es gerade im Studium dran oder es liegt noch nicht all zu lang zurück. Einen eigenständigen HSL Color Requester habe ich bereits fertig, nur meine Formel ist noch ungenau. Wer da zu 100% sich auskennt darf gern mit daran arbeiten.

Exe erweitern? Das Tool gibt es wie es ist. Zzt code ich eine weitere Version mit neuen Features.

Programmcode geht bei mir nicht verloren. Alles gut ;)
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
@udg:

Ne, da muß ich auch passen, Eine Formal dazu kann ich dir nicht liefern. Sorry. Ich weiß auch gar nicht ob das so einfach möglich ist. ;)

Aber dann hast du ja schon was an dem du vielleicht noch arbeiten kannst,,, - ich würde mich an gängiger Photosoftware orientieren und an deren Farbformaten. Sowas wie SDL Farbwert ist ja nur, nun ja, spezial requirement, ist auch nur ein RGB/A Wert im Raum von 0-255, jeweils unterteilt.

Meinte nur SDL, weil du zum Beispiel auch den PureBasic Farbcode mit drin hast. Ist auch nicht wirklich für "jedermann" und sehr speziell. :)

Aber ein Dropdown für eine Zielkonvertierung wäre schon nice, vor allem wenn da mehrere Sachen drin stehen ;)
 
Zuletzt bearbeitet:

udg

Neu angemeldet

Registriert
8 Feb. 2014
Beiträge
70
  • Thread Starter Thread Starter
  • #10
@udg:

Aber ein Dropdown für eine Zielkonvertierung wäre schon nice, vor allem wenn da mehrere Sachen drin stehen ;)

werd ich berücksichtigen.

Purebasic Colorcode Konvertierung habe ich drin, weil ich selber mit PB programmier.
aber auch das kann erweitert werden.
 

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Wenn du dir ein Programm heruntergeladen hast bekommst du doch auch nicht automatisch den SC dazu.
Na ja, bei vielen nichtkommerziellen Programmen heutzutage schon. Unter Linux ist das sogar eher die Regel als die Ausnahme. Schau dir mal an, wie riesig Github ist und wie viele Leute Projekte dort hochgeladen haben.

Was mein Color Tool macht, kann genau in der beigefügten readme erlesen werden.
Nein, denn ich kann nicht wissen, ob das Programm nicht Schadcode enthält und meinen Steam-Login oder die Passwortdatenbank aus Firefox extrahiert. Das Programm ist nicht von einer vertrauenswürdigen Firma (Microsoft, Adobe, Oracle, SAP) signiert. Woher sollen wir überhaupt wissen, dass du tatsächlich der echte udg bist und nicht ein bösartiger Mensch, der sich udg's Arbeit zu Eigen gemacht und diese mit Schadcode versehen auf Uploaded hochgeladen hat?

Exe erweitern? Das Tool gibt es wie es ist. Zzt code ich eine weitere Version mit neuen Features.
Und warum willst du dir die Arbeit selbst machen, anstatt Freiwillige auch daran basteln zu lassen? Du musst PRs auf Github ja nicht annehmen.
 

udg

Neu angemeldet

Registriert
8 Feb. 2014
Beiträge
70
  • Thread Starter Thread Starter
  • #12
Du nimmst es sehr genau. Gut so.

Also ich zb vertraue weder M$ noch einem AV Programm dem Du dein komplettes Vertrauen zu schenken scheinst.

Das muss nun wirklich jeder selber wissen wem er vertraut und wem nicht.
Und das ich der echte "udg" bin kann ich nur sagen, müsste man mich zu Hause besuchen. Glauben oder lassen.

Wenn Du weiterhin kein Programmierer bist, nutzt dir auch der Code nichts um zu sehen was da passiert. Aber Du darfst gern reinschauen wenn Du Interesse hast.

Natürlich kann ich den Download auf meinen eigenen Server legen (was ich gleich mal machen werde) denn Ul.to ist nicht wirklich so der Bringer.
Da geb ich Dir recht.

Ja warum will ich mir die Arbeit selber machen? Merkwürdige Frage.
Weil ich Spaß daran habe, ich gern programmiere und in meinen Augen nützliche Helfertools programme von denen ich das denke sie zu sein scheinen.
Wenn das andere Leute machen würden, hätte ich absolut gar nichts davon. Dann könnte ich doch auch gleich mit programmieren aufhöhren ;)

vg
 
Zuletzt bearbeitet:

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Zuerst einmal danke, dass du weiterhin darüber mit mir diskutierst, viele Andere hätten mich schon geblockt und ignoriert ;)

Ich will dein Tool übrigens nicht schlecht reden (finde es nützlich und gut designt), aber dir aufzeigen, welche Argumente es für Open Source Software gibt. Leider habe ich noch keinen passenden Artikel gefunden oder geschrieben, den ich dir da verlinken könnte, daher argumentiere ich ad hoc.

Also ich zb vertraue weder M$ noch einem AV Programm dem Du dein komplettes Vertrauen zu schenken scheinst.
Hier liegst du falsch, mein privat genutztes Betriebssystem des Vertrauens ist Debian und dort nutze ich gpick (oben verlinkt) als Colour Picker.

Wenn ich aber schon ein Microsoft-Betriebssystem nutzen würde, so wie du, würde ich Microsoft eher vertrauen als einem dahergelaufenen Hobbyprogrammierer.

Wenn Du weiterhin kein Programmierer bist, nutzt dir auch der Code nichts um zu sehen was da passiert.
Auch hier muss ich dir widersprechen: Wäre das Tool Open Source, könnten auch Andere, denen ich vielleicht mehr vertraue, den Code des Tools durchsehen und bewerten (sog. "Code Auditing"). Das ist bspw. bei Verschlüsselungsprogrammen üblich.

Ich selbst bin – siehe Signatur – kein Programmierer, kann aber dennoch Code in diversen Sprachen lesen und schreiben.

Natürlich kann ich den Download auf meinen eigenen Server legen (was ich gleich mal machen werde) denn Ul.to ist nicht wirklich so der Bringer.
Da geb ich Dir recht.
Kannst ja beides anbieten und eine Prüfsumme auf deiner Homepage anlegen.

Bei Github könntest du zusätzlich reproducible Builds erstellen lassen. Wäre in meinen Augen für eine solche Software unnötig, aber vielleicht willst du das ja lernen ;)

Wenn das andere Leute machen würden, hätte ich absolut gar nichts davon. Dann könnte ich doch auch gleich mit programmieren aufhöhren ;)
Das Argument verstehe ich nicht. Wenn andere Code auf Github einreichen, kannst du daran doch auch lernen? Oder du kannst deren Patches anders implementieren? Du kannst ja dennoch selbst programmieren, aber es gibt eben die Möglichkeit, dass Andere dich auf Bugs hinweisen, die nur im Programmcode und nicht offensichtlich im fertigen Programm liegen.
 

udg

Neu angemeldet

Registriert
8 Feb. 2014
Beiträge
70
  • Thread Starter Thread Starter
  • #16

es existiert schon. nur ist meine formel noch nicht richtig.

colorpalettee8ja2.png


exe file
exe file

[KW]
;: Purebasic 5.60
;: enable XP
DisableASM
EnableExplicit


Enumeration
#Window_main
EndEnumeration
Enumeration
#Canvas_0
#Canvas_1
;: Text
#TxT_Old
#TxT_NewColor
#TxT_R
#TxT_G
#TxT_B
#TxT_A
#TxT_H
#TxT_S
#TxT_L
;:Frames
#FrameColorPreview
#FramecolorSettings
;:Canvas Full ColorPalette
#CanvasRgbColorPalette
#CanvasVerticalStreifen
;:Canvas ColorPreview
#CanvasOldColor
;:NEW COLOR PREVIEW
#CanvasNewColor
;:StringGadgets
#String_R
#String_G
#String_B
#String_A
#String_H
#String_S
#String_L
;:Trackbars
#TrackBar_R
#TrackBar_G
#TrackBar_B
;:Buttons
#Btn_Ok
#Btn_Cancel
;: Random Colors
#Container_RndColors
#Canvas_RndColor1
#Canvas_RndColor2
#Canvas_RndColor3
#Canvas_RndColor4
#Canvas_RndColor5
#Canvas_RndColor6
#Canvas_RndColor7
#Canvas_RndColor8
#Canvas_RndColor9
#Canvas_RndColor10
#Canvas_RndColor11
#Canvas_RndColor12
#Canvas_RndColor13
#Canvas_RndColor14
#Canvas_RndColor15
#Canvas_RndColor16
EndEnumeration

#COLOR_SPECTRUM_SIZE_MAX = 255

Global lCH.l = 0
Global lCS.l = 0
Global lCL.l = 127
Global lImage.l



Procedure GetWindowBackgroundColor()
Define BackgroundColor.l

CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
BackgroundColor = GetSysColor_(#COLOR_3DFACE)
CompilerCase #PB_OS_Linux
BackgroundColor = RGB(237,235,236)
CompilerCase #PB_OS_MacOS
BackgroundColor = RGB(237,235,236)
CompilerEndSelect
ProcedureReturn BackgroundColor

EndProcedure

Procedure RGBToHLS(lCR.l, lCG.l, lCB.l, *lCH.long, *lCL.long, *lCS.long)

Protected fCH.f
Protected fCS.f
Protected fCL.f
Protected lMin.l
Protected lMax.l
Protected lDif.l
Protected lSum.l
Protected lNmR.l
Protected lNmG.l
Protected lNmB.l

If lCR < lCG
If lCR < lCB
lMin = lCR
Else
lMin = lCB
EndIf
Else
If lCG < lCB
lMin = lCG
Else
lMin = lCB
EndIf
EndIf
If lCR > lCG
If lCR > lCG
lMax = lCR
Else
lMax = lCB
EndIf
Else
If lCG > lCB
lMax = lCG
Else
lMax = lCB
EndIf
EndIf
lDif = lMax - lMin
lSum = lMax + lMin
fCL = lSum / 510
If lMax = lMin
fCH = 0
fCS = 0
Else
lNmR = (lMax - lCR) / lDif
lNmG = (lMax - lCG) / lDif
lNmB = (lMax - lCB) / lDif
If fCL <= 0.5
fCS = lDif / lSum
Else
fCS = lDif / (510 - lSum)
EndIf
If lCR = lMax
fCH = 60 * (6 + lNmB - lNmG)
EndIf
If lCG = lMax
fCH = 60 * (2 + lNmR - lNmB)
EndIf
If lCB = lMax
fCH = 60 * (4 + lNmG - lNmR)
EndIf
EndIf
If fCH = 360
fCH = 0
EndIf
fCH = (fCH / 360 * #COLOR_SPECTRUM_SIZE_MAX)
fCL = fCL * #COLOR_SPECTRUM_SIZE_MAX
fCS = fCS * #COLOR_SPECTRUM_SIZE_MAX
PokeL(*lCH, Int(fCH))
PokeL(*lCL, Int(fCL))
PokeL(*lCS, Int(fCS))

EndProcedure

Procedure.l ConvertRM(fM1.f, fM2.f, fCH.f)

If fCH > 360
fCH - 360
EndIf
If fCH < 0
fCH + 360
EndIf

If fCH < 60
fM1 = fM1 + (fM2 - fM1) * fCH / 60
Else
If fCH < 180
fM1 = fM2
Else
If fCH < 240
fM1 = fM1 + (fM2 - fM1) * (240 - fCH) / 60
EndIf
EndIf
EndIf
ProcedureReturn fM1 * 255

EndProcedure

Procedure HLSToRGB(fCH.f, fCL.f, fCS.f, *lCR.long, *lCG.long, *lCB.long)

Protected fM1.f
Protected fM2.f

fCH = fCH * 360 / #COLOR_SPECTRUM_SIZE_MAX
fCL = fCL / #COLOR_SPECTRUM_SIZE_MAX
fCS = fCS / #COLOR_SPECTRUM_SIZE_MAX

If fCS = 0
PokeL(*lCR, fCL * 255)
PokeL(*lCG, fCL * 255)
PokeL(*lCB, fCL * 255)
Else
If fCL <= 0.5
fM2 = fCL + fCL * fCS
Else
fM2 = fCL + fCS - fCL * fCS
EndIf
fM1 = 2 * fCL - fM2
PokeL(*lCR, ConvertRM(fM1, fM2, fCH + 120))
PokeL(*lCG, ConvertRM(fM1, fM2, fCH))
PokeL(*lCB, ConvertRM(fM1, fM2, fCH - 120))
EndIf

EndProcedure

Procedure setDrawCross(lX.l, lY.l)

If lX < #COLOR_SPECTRUM_SIZE_MAX
lX + 1
EndIf
If lY < #COLOR_SPECTRUM_SIZE_MAX
lY + 1
EndIf
Box(lX - 1, lY - 9, 3, 5, $000000)
Box(lX - 1, lY + 5, 3, 5, $000000)
Box(lX - 9, lY - 1, 5, 3, $000000)
Box(lX + 5, lY - 1, 5, 3, $000000)

EndProcedure

Procedure setGenerateStectre()

Define lH.l
Define lS.l
Define lCR.l
Define lCG.l
Define lCB.l

lImage = CreateImage(#PB_Any, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2)
If lImage <> 0
If StartDrawing(ImageOutput(lImage))
Box(0, 0, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2, $000000)
For lS = 1 To #COLOR_SPECTRUM_SIZE_MAX
For lH = 1 To #COLOR_SPECTRUM_SIZE_MAX
HLSToRGB(lH, #COLOR_SPECTRUM_SIZE_MAX / 2, lS, @lCR, @lCG, @lCB)
Plot(lH, ( #COLOR_SPECTRUM_SIZE_MAX - lS) + 1, RGB(lCR, lCG, lCB))
Next lH
Next lS
StopDrawing()
EndIf
EndIf

EndProcedure

Procedure setDrawSpectre()

Define lH.l
Define lS.l
Define lCR.l
Define lCG.l
Define lCB.l

If StartDrawing(CanvasOutput(#Canvas_0))
If lImage <> 0
DrawAlphaImage(ImageID(lImage), 0, 0)
EndIf
setDrawCross(lCH, #COLOR_SPECTRUM_SIZE_MAX - lCS)
HLSToRGB(lCH, lCL, lCS, @lCR, @lCG, @lCB)
SetGadgetColor(#CanvasNewColor, #PB_Gadget_BackColor, RGB(lCR, lCG, lCB))
StopDrawing()
EndIf

EndProcedure

Procedure setDrawArrow(lX.l, lY.l)
; ROUTINE DE TRACAGE DE LA BARRE DE PROGRESSION.
Define x1.l
Define y1.l
Define x2.l
Define y2.l
Define xm.l

If lY =< 5
lY = 5
EndIf
If lY => #COLOR_SPECTRUM_SIZE_MAX - 5
lY = #COLOR_SPECTRUM_SIZE_MAX - 5
EndIf
;Box(lX, lY, 8, 3, $000000)
Line(lX, lY, 5, -5, $000000)
Line(lX, lY, 5, 5 , $000000)
LineXY(lX + 5, lY - 5, lX + 5, lY + 5 , $000000)
FillArea(lX + 2, lY, 0, 0)

EndProcedure

Procedure setDrawLum()

Define i.l
Define lCR.l
Define lCG.l
Define lCB.l

If StartDrawing(CanvasOutput(#Canvas_1))
Box(0, 0, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2, GetWindowBackgroundColor())
Box(0, 0, 20, #COLOR_SPECTRUM_SIZE_MAX + 2, $000000)
For i = 1 To #COLOR_SPECTRUM_SIZE_MAX
HLSToRGB(lCH, i, lCS, @lCR, @lCG, @lCB)
LineXY(1,( #COLOR_SPECTRUM_SIZE_MAX - i) + 1, 18,( #COLOR_SPECTRUM_SIZE_MAX - i) + 1, RGB(lCR, lCG, lCB))
Next i
setDrawArrow(22, #COLOR_SPECTRUM_SIZE_MAX - lCL)
HLSToRGB(lCH, lCL, lCS, @lCR, @lCG, @lCB)
SetGadgetColor(#CanvasNewColor, #PB_Gadget_BackColor, RGB(lCR, lCG, lCB))
StopDrawing()
EndIf

EndProcedure

Procedure DrawRGBText()

Define lCR.l
Define lCG.l
Define lCB.l

HLSToRGB(lCH, lCL, lCS, @lCR, @lCG, @lCB)
SetGadgetText(#String_R, Str(lCR))
SetGadgetText(#String_G, Str(lCG))
SetGadgetText(#String_B, Str(lCB))


EndProcedure

Define event.l
Define evenp.l
Define eveng.l
Define lMosX.l
Define lMosY.l
Define lMosP.l
Define Retour_H.l
Define Retour_S.l
Define Retour_L.l
Define Retour_R.l
Define Retour_G.l
Define Retour_B.l
Define hWnd.l = OpenWindow(#Window_main, 0, 0, #COLOR_SPECTRUM_SIZE_MAX + 246, #COLOR_SPECTRUM_SIZE_MAX + 100, "Color Palette", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If hWnd <> 0
SmartWindowRefresh(#Window_main, 1)
CanvasGadget(#Canvas_0, 5, 15, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2)
CanvasGadget(#Canvas_1, 275, 15, 28, #COLOR_SPECTRUM_SIZE_MAX + 2)
TextGadget(#CanvasNewColor, 415, 60, 70, 35, "")

StringGadget(#String_R, 258, 270, 33, 20, "")
StringGadget(#String_G, 258, 291, 33, 20, "")
StringGadget(#String_B, 258, 312, 33, 20, "")


FrameGadget(#FrameColorPreview, 320, 9, 175, 95, "Preview")
CanvasGadget(#CanvasOldColor, 415, 25, 70, 35)

TextGadget(#TxT_Old, 330, 40, 75, 15, "current Color:")
TextGadget(#TxT_NewColor, 330, 75, 75, 15, "new Color:")


FrameGadget(#FramecolorSettings, 320, 105, 175, 160, "Color Settings")
TextGadget(#TxT_R, 330, 130, 15, 20, "R")
StringGadget(#String_R, 350, 125, 40, 25, "")
StringGadget(#String_G, 350, 160, 40, 25, "")
TextGadget(#TxT_G, 330, 165, 15, 20, "G")
TextGadget(#TxT_B, 330, 200, 15, 20, "B")
StringGadget(#String_B, 350, 195, 40, 25, "")
TextGadget(#TxT_A, 330, 235, 15, 20, "A")
StringGadget(#String_A, 350, 230, 40, 25, "1.0")
TextGadget(#TxT_H, 425, 130, 15, 20, "H")
TextGadget(#TxT_S, 425, 165, 15, 20, "S")
TextGadget(#TxT_L, 425, 200, 15, 20, "L")
TrackBarGadget(#TrackBar_R, 390, 125, 20, 25, 0, 100, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_G, 390, 160, 20, 25, 0, 100, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_B, 390, 195, 20, 25, 0, 100, #PB_TrackBar_Vertical)
StringGadget(#String_H, 445, 125, 40, 25, "100")
StringGadget(#String_S, 445, 160, 40, 25, "100")
StringGadget(#String_L, 445, 195, 40, 25, "100")
ButtonGadget(#Btn_Ok, 425, 295, 70, 45, "OK")
ButtonGadget(#Btn_Cancel, 325, 295, 70, 45, "Cancel")


ContainerGadget(#Container_RndColors, 10, 280, 250, 60, #PB_Container_BorderLess)
CanvasGadget(#Canvas_RndColor1, 10, 10, 20, 20)
CanvasGadget(#Canvas_RndColor2, 40, 10, 20, 20)
CanvasGadget(#Canvas_RndColor3, 70, 10, 20, 20)
CanvasGadget(#Canvas_RndColor4, 100, 10, 20, 20)
CanvasGadget(#Canvas_RndColor5, 130, 10, 20, 20)
CanvasGadget(#Canvas_RndColor6, 160, 10, 20, 20)
CanvasGadget(#Canvas_RndColor7, 190, 10, 20, 20)
CanvasGadget(#Canvas_RndColor8, 220, 10, 20, 20)
CanvasGadget(#Canvas_RndColor9, 10, 40, 20, 20)
CanvasGadget(#Canvas_RndColor10, 40, 40, 20, 20)
CanvasGadget(#Canvas_RndColor11, 70, 40, 20, 20)
CanvasGadget(#Canvas_RndColor12, 100, 40, 20, 20)
CanvasGadget(#Canvas_RndColor13, 130, 40, 20, 20)
CanvasGadget(#Canvas_RndColor14, 160, 40, 20, 20)
CanvasGadget(#Canvas_RndColor15, 190, 40, 20, 20)
CanvasGadget(#Canvas_RndColor16, 220, 40, 20, 20)
CloseGadgetList()

setGenerateStectre()
setDrawSpectre()
setDrawLum()

DrawRGBText()

Retour_R = Val(GetGadgetText(#String_R))
Retour_G = Val(GetGadgetText(#String_G))
Retour_B = Val(GetGadgetText(#String_B))

Repeat
event = WaitWindowEvent(20)
evenp = EventType()
eveng = EventGadget()

If event = #PB_Event_Gadget
Select eveng
Case #Canvas_0
If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(#Canvas_0, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
lMosX.l = GetGadgetAttribute(#Canvas_0, #PB_Canvas_MouseX)
lMosY.l = GetGadgetAttribute(#Canvas_0, #PB_Canvas_MouseY)
If lMosX < 0
lMosX = 0
Else
If lMosX > #COLOR_SPECTRUM_SIZE_MAX
lMosX = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
If lMosY < 0
lMosY = 0
Else
If lMosY > #COLOR_SPECTRUM_SIZE_MAX
lMosY = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
lCH = lMosX
lCS = #COLOR_SPECTRUM_SIZE_MAX - lMosY
setDrawSpectre()
setDrawLum()

DrawRGBText()

Retour_R = Val(GetGadgetText(#String_R))
Retour_G = Val(GetGadgetText(#String_G))
Retour_B = Val(GetGadgetText(#String_B))
EndIf
Case #Canvas_1
If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(#Canvas_1, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
lMosY.l = GetGadgetAttribute(#Canvas_1, #PB_Canvas_MouseY)
If lMosY < 0
lMosY = 0
Else
If lMosY > #COLOR_SPECTRUM_SIZE_MAX
lMosY = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
lCL = #COLOR_SPECTRUM_SIZE_MAX - lMosY
setDrawLum()

DrawRGBText()

Retour_R = Val(GetGadgetText(#String_R))
Retour_G = Val(GetGadgetText(#String_G))
Retour_B = Val(GetGadgetText(#String_B))
EndIf
Case #String_R
If evenp = #PB_EventType_Change
Retour_R = Val(GetGadgetText(#String_R))
If Retour_R < 0
Retour_R = 0
ElseIf Retour_R > 255
Retour_R = 255
EndIf
RGBToHLS(Retour_R, Retour_G, Retour_B, @lCH, @lCL, @lCS)
setDrawSpectre()
setDrawLum()

ElseIf evenp = #PB_EventType_LostFocus
SetGadgetText(#String_R, Str(Retour_R))
EndIf
Case #String_G
If evenp = #PB_EventType_Change
Retour_G = Val(GetGadgetText(#String_G))
If Retour_G < 0
Retour_G = 0
ElseIf Retour_G > 255
Retour_G = 255
EndIf
RGBToHLS(Retour_R, Retour_G, Retour_B, @lCH, @lCL, @lCS)
setDrawSpectre()
setDrawLum()

ElseIf evenp = #PB_EventType_LostFocus
SetGadgetText(#String_G, Str(Retour_G))
EndIf
Case #String_B
If evenp = #PB_EventType_Change
Retour_B = Val(GetGadgetText(#String_B))
If Retour_B < 0
Retour_B = 0
ElseIf Retour_B > 255
Retour_B = 255
EndIf
RGBToHLS(Retour_R, Retour_G, Retour_B, @lCH, @lCL, @lCS)
setDrawSpectre()
setDrawLum()

ElseIf evenp = #PB_EventType_LostFocus
SetGadgetText(#String_B, Str(Retour_B))
EndIf
EndSelect
EndIf
Until event = #PB_Event_CloseWindow
FreeImage(lImage)
EndIf
End[/KW]

--- [2017-03-13 16:40 CET] Automatisch zusammengeführter Beitrag ---

@phre4k

ob und wie ich meinen Code veröffentliche überlege ich mir irgendwann einmal.
Es gibt Projekte die ich allein mache und es gibt Projekte an denen ich von Anfang an mit mehreren Leuten arbeite.

Mehr fällt mir dazu im Moment nicht ein. Github hin oder her.

Vg
 

udg

Neu angemeldet

Registriert
8 Feb. 2014
Beiträge
70
  • Thread Starter Thread Starter
  • #17
Version 7 released. siehe erster Post. Link angepasst

Grüße
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
Hi, nur mal so, kannst du ein "Changelog" hier bereitstellen was ergänzt wurde von Version zu Version, nicht nur heute?

Ich würde das gerne mal nachlesen und vielleicht kann man da auch Feedback zu geben.

Aber coole Sache dein Tool! *thumbs up* :T

Was mir gerade noch auffällt, ich glaube Flash hatte das - wenn man mit der Maus über einen Pixel gefahren ist, hatte man sofort eine Vorschau welcher Farbton aufgenommen werden würde - also das war interaktiv.

Aber das sollte nur eine Vorschau sein, bevor der Pixel/die Farbe wirklich ausgewählt wird. Nur als "Preview" Anzeige. Bin unter Linux und kann gerade nicht testen ob dein Tool das auch so macht.

Bzw. das sich "alles" aktualisiert, aber die Auswahl erst mit Pickup übernommen wird - falls man die Auswahl "abbricht", zum Beispiel mit Rechtsklick wenn der Picker gewählt ist.

Hm... macht das Sinn? :D


PPS: Was natürlich auch noch geil wäre:

Bestimmte Farben zwischenzuspeichern in Auswahlfelder, so wie das der Standard Windows Color Picker macht, nur eben besser! - Heißt man kann durch eine Liste von Farbpaletten oder erst mal nur Farbfelder durchscrollen, die man gespeichert hat - von Programaufruf zu Programaufruf - quasi eine History bzw. eher noch "eine ausgewählte History" von Farben die ich für ein "Schema" bzw. in meiner History speichern will.

Hast du da die Möglichkeit "scrollbare" Farbelder, sagen wir 25, oder mit ein- ausklappbarem Fenster "über das Hauptfenster" sichtbar zu scrollen, das man dann links eine Liste der Felder mit den "Farbschemas" hätte, rechts eine Scrollleiste zum durchscrollen - und die Felder sind "60 x 30" Pixel hoch/breit - zum Beispiel, und davon 5-6 in einer Reihe....

Nur so Ideen ;)

PS: Ich kann kein Pure-Basic, sonst würde ich da vielleicht auch was zum Code für deine HSL Berechnung sagen, bzw. es mir mal anschauen... geht aber leider nicht ;)
 
Zuletzt bearbeitet:

udg

Neu angemeldet

Registriert
8 Feb. 2014
Beiträge
70
  • Thread Starter Thread Starter
  • #19
...kannst du ein "Changelog" hier bereitstellen was ergänzt wurde von Version zu Version, nicht nur heute? Ich würde das gerne mal nachlesen und vielleicht kann man da auch Feedback zu geben.

Aber ja, das trage ich mal zusammen.


Aber coole Sache dein Tool! *thumbs up* :T

Vielen Vielen Dank :)

Was mir gerade noch auffällt, ich glaube Flash hatte das - wenn man mit der Maus über einen Pixel gefahren ist, hatte man sofort eine Vorschau welcher Farbton aufgenommen werden würde - also das war interaktiv.

Aber das sollte nur eine Vorschau sein, bevor der Pixel/die Farbe wirklich ausgewählt wird. Nur als "Preview" Anzeige. Bin unter Linux und kann gerade nicht testen ob dein Tool das auch so macht.

Bzw. das sich "alles" aktualisiert, aber die Auswahl erst mit Pickup übernommen wird - falls man die Auswahl "abbricht", zum Beispiel mit Rechtsklick wenn der Picker gewählt ist.

Hm... macht das Sinn?
:D

Genau so verhält sich der Picker, macht es ... Sinn? Macht es :)

Was jedoch nicht geht und ich wüsste nicht warum das sinnvoll ist, dass man den Color Picker abbrechen kann. Mit linksklick -> Maus wird der darunter befindliche Farbton übernommen und der Picker wieder deaktiviert. Wenn die Farbe nicht die gewünschte sein sollte, einfach neu picken, dafür habe ich jetzt für genaueres lokalisieren eines Farbpixels die Lupe integriert. Ein rechtsklick der Maus öffnet in Windows ein Kontextmenü. das wäre nervig.


PPS: Was natürlich auch noch geil wäre:

Bestimmte Farben zwischenzuspeichern in Auswahlfelder, so wie das der Standard Windows Color Picker macht, nur eben besser! - Heißt man kann durch eine Liste von Farbpaletten oder erst mal nur Farbfelder durchscrollen, die man gespeichert hat - von Programaufruf zu Programaufruf - quasi eine History bzw. eher noch "eine ausgewählte History" von Farben die ich für ein "Schema" bzw. in meiner History speichern will.

Ich weis was Du meinst und hatte das auch schon im Sinn. Jedoch ist meine Idee vom Grund etwas anders als deine. Man pickt eine Farbe und hat einen Button wie zb: "send Color to Preview" |1|2|3|4|5| ... so was in der Art und das jedoch für 5 Farb-Slots. Das reicht vollkommen aus um sich ein Color Theme zusammenstellen zu können und einen Überblick zu haben, inwiefern das Ganze harmoniert.

Hier mein Gedanke als Beispiel wie man das parallel unter dem Picker anbieten könnte:

|1|2|3|4|5|
stripexuu64.png


Jedes Quadrat wäre ein freier Farbslot in den man die Farbe senden und von mir aus auch abspeichern könnte :D

Hast du da die Möglichkeit "scrollbare" Farbelder, sagen wir 25, oder mit ein- ausklappbarem Fenster "über das Hauptfenster" sichtbar zu scrollen, das man dann links eine Liste der Felder mit den "Farbschemas" hätte, rechts eine Scrollleiste zum durchscrollen - und die Felder sind "60 x 30" Pixel hoch/breit - zum Beispiel, und davon 5-6 in einer Reihe....

Alles geht. Die Frage ist, ob deine Idee zu viel des Guten ist :) Meine Überlegung siehe oben werde ich wohl für v8 in Angriff nehmen.


PS: Ich kann kein Pure-Basic, sonst würde ich da vielleicht auch was zum Code für deine HSL Berechnung sagen, bzw. es mir mal anschauen... geht aber leider nicht ;)

Macht nix. Ist nicht so wichtig. Wenn ich etwas mehr Zeit habe, wird der eigene ColorRequester mal fertig programmiert. Der jetzige ist 100% i.O.
 
Zuletzt bearbeitet:
Oben