- Joined
- Apr 26, 2008
- Messages
- 1,126 (0.19/day)
- Location
- london
System Name | Staggered |
---|---|
Processor | Intel i5 6600k (XSPC Rasa) |
Motherboard | Gigabyte Z170 Gaming K3 |
Cooling | RX360 (3*Scythe GT1850) + RX240 (2*Scythe GT1850) + Laing D5 Vario (with EK X-Top V2) |
Memory | 2*8gb Team Group Dark @3000Mhz 16-16-16-36 1.25v |
Video Card(s) | Inno3D GTX 1070 HerculeZ |
Storage | 256gb Samsung 830 + 2*1tB Samsung F3 + 2*2tB Samsung F4EG |
Display(s) | Flatron W3000H 2560*1600 |
Case | Cooler Master ATCS 840 + 1*120 GT1850 (exhaust) + 1*230 Spectre Pro + Lamptron FC2 (fan controller) |
Power Supply | Enermax Revolution 85+ 1250W |
Software | Windows 10 Pro 64bit |
Disclaimer: This thread is mostly for keeping me motivated since I'm a lazy something or other. So feel free to be annoying.
I code in Java using OpenGL and hate Java Swing with all my heart. I usually make crappy ad hoc UIs for every thing I code (not that I code much), so I decided to make my own GUI library.
Since I'm a noob it'd make a good learning experience, what with never having coded a library before. I'm making it renderer unspecific for the same reason.
Although I'm coding it in Java, I'm going to try to not use any Java packages (the import thingies). This way it'll pretty much be OO psuedo-code in Java form, easily convertible into whichever OO language I decide to learn next. Also, it'd increase the cool factor, which is good for motivation.
Renderer unspecific basically means that the library won't handle any of the drawing. You'll have to make your own renderer using whatever graphics library you prefer (in my case, that would be OpenGL).
I code in Java using OpenGL and hate Java Swing with all my heart. I usually make crappy ad hoc UIs for every thing I code (not that I code much), so I decided to make my own GUI library.
Since I'm a noob it'd make a good learning experience, what with never having coded a library before. I'm making it renderer unspecific for the same reason.
Although I'm coding it in Java, I'm going to try to not use any Java packages (the import thingies). This way it'll pretty much be OO psuedo-code in Java form, easily convertible into whichever OO language I decide to learn next. Also, it'd increase the cool factor, which is good for motivation.
Renderer unspecific basically means that the library won't handle any of the drawing. You'll have to make your own renderer using whatever graphics library you prefer (in my case, that would be OpenGL).
-A script generates a UI via the library.
-UI takes in KB/M data from whatever program (now known as Jimmy) is using the library.
-UI updates element positions (x,y coordinates), states and orders (what goes on top of what) based on KB/M input.
-UI sends element positions, orders and states/events to Jimmy.
-Jimmy renders a GUI using received UI element positions and orders.
-Jimmy performs functions and updates its variables using received UI element states/events.
-UI takes in KB/M data from whatever program (now known as Jimmy) is using the library.
-UI updates element positions (x,y coordinates), states and orders (what goes on top of what) based on KB/M input.
-UI sends element positions, orders and states/events to Jimmy.
-Jimmy renders a GUI using received UI element positions and orders.
-Jimmy performs functions and updates its variables using received UI element states/events.
-Have everything about the GUI (including what each element does when triggered) be determined via a script.
-Layers (e.g. inventory screen) that are resizeable, repositionable and min/maximizable during runtime.
-Buttons, text-boxes, drop-down lists, sliders and scrollbars.
-Elements hold very abstracted state/event data (e.g. a double between 0 and 1 for sliders).
-Layers (e.g. inventory screen) that are resizeable, repositionable and min/maximizable during runtime.
-Buttons, text-boxes, drop-down lists, sliders and scrollbars.
-Elements hold very abstracted state/event data (e.g. a double between 0 and 1 for sliders).
-Buttons and layers have click detection.
-Layers are reordered when clicked on.
-Layers are repositioned when you click and drag them.
-Horizontal and vertical scroll bars for layers.
-Layers can be resized.
-Layers are reordered when clicked on.
-Layers are repositioned when you click and drag them.
-Horizontal and vertical scroll bars for layers.
-Layers can be resized.
I'm not very good at explaining things so I hope what I've said so far makes sense. If not, just ask.
I̶'̶l̶l̶ ̶u̶p̶l̶o̶a̶d̶ ̶t̶h̶e̶ ̶s̶o̶u̶r̶c̶e̶ ̶a̶f̶t̶e̶r̶ ̶I̶'̶v̶e̶ ̶c̶o̶d̶e̶d̶ ̶a̶ ̶b̶i̶t̶ ̶m̶o̶r̶e̶ ̶a̶n̶d̶ ̶a̶d̶d̶e̶d̶ ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶.̶.̶ Also, scripting support will be the last thing I do, so the source won't be for a library, it'll be for a program with all the classes intended for the library plus a Core class (main) to simulate/act as an abstraction of Jimmy and his renderer.
Compiled runnable version,
http://www.mediafire.com/download/0tl8k4819xkr3i0/GuiDemo.rar
It works like a standard UI. Drag the scroll bar to scroll, click a button to click a button, drag the bottom right corner to resize and drag anywhere else to drag the layer.
Source,
http://pastebin.com/u/razaron
It's under "GUI Library/". Requires LWJGL.
This is all part of a larger goal, the first step of which is to be able to quickly and easily make UIs. By around October I hope to have learned basic AI, coded a fairly versatile cellular automaton library, coded an impulse based physics library and gotten my head around scripting (so I don't have to hard-code everything). I've already learned A*, know how I'm going to do the cellular automaton library and coded a verlet based physics engine beforehand. The only thing I know jack squat about is scripting.
I̶'̶l̶l̶ ̶u̶p̶l̶o̶a̶d̶ ̶t̶h̶e̶ ̶s̶o̶u̶r̶c̶e̶ ̶a̶f̶t̶e̶r̶ ̶I̶'̶v̶e̶ ̶c̶o̶d̶e̶d̶ ̶a̶ ̶b̶i̶t̶ ̶m̶o̶r̶e̶ ̶a̶n̶d̶ ̶a̶d̶d̶e̶d̶ ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶.̶.̶ Also, scripting support will be the last thing I do, so the source won't be for a library, it'll be for a program with all the classes intended for the library plus a Core class (main) to simulate/act as an abstraction of Jimmy and his renderer.
Compiled runnable version,
http://www.mediafire.com/download/0tl8k4819xkr3i0/GuiDemo.rar
It works like a standard UI. Drag the scroll bar to scroll, click a button to click a button, drag the bottom right corner to resize and drag anywhere else to drag the layer.
Source,
http://pastebin.com/u/razaron
It's under "GUI Library/". Requires LWJGL.
This is all part of a larger goal, the first step of which is to be able to quickly and easily make UIs. By around October I hope to have learned basic AI, coded a fairly versatile cellular automaton library, coded an impulse based physics library and gotten my head around scripting (so I don't have to hard-code everything). I've already learned A*, know how I'm going to do the cellular automaton library and coded a verlet based physics engine beforehand. The only thing I know jack squat about is scripting.
Last edited: