### Author Topic: Axe GUI Library  (Read 8991 times)

0 Members and 1 Guest are viewing this topic.

#### Munchor

• LV13 Extreme Addict (Next: 9001)
• Posts: 6199
• Rating: +295/-121
• Code Recycler
##### Axe GUI Library
« on: April 06, 2011, 09:51:19 am »

I was just in the mood to create an Axe GUI library and I thought "Why not?".

So it's not really a library since I use subroutines to create frames, buttons and dialogs.

So that you can have an idea of how this works, take a look at the code to draw the ABOUT button you can see in the demo:

Code: [Select]
sub(DB,40,42,30,10Text(46,44,"ABOUT
As simple as that!

Let's take a look at its event when pressed:

Code: [Select]
If getKey(54)[80C0E0F0F8F0B818->OIf X>40 and (X<70 and (Y>42 and (Y<52sub(DD,"ABOUT","PROGRAM MADE","BY DAVID","GOMES"Repeat getKeyEndEnd...End

So you have just learnt the two Drawing subroutines, DD (draw dialog) and DB (draw button).

There is not a DF (draw frame) yet, I am tidying it up to make it all a subroutine, but when finished it'll work like this:

Code: [Select]
sub(DF,"TITLE",1,0
The 1 (which could be a 0) is for X button or no X button to close the frame.
The 0 (which could be a 1) is for allow [CLEAR] to exit or don't allow [CLEAR] to exit.

This is just a demo, but I hope the library can have some uses I'll be making a few more Drawing Routines for other kinds of buttons, listboxes, etc. Not sure of how to make a textbox though.

Probably they can be in separate files (the routines) instead of being in the same program as the main program.

What do you think?
« Last Edit: April 06, 2011, 09:51:44 am by Scout »

#### Yeong

• Not a bridge
• LV12 Extreme Poster (Next: 5000)
• Posts: 3739
• Rating: +278/-12
• Survivor of Apocalypse
##### Re: Axe GUI Library
« Reply #1 on: April 06, 2011, 11:16:43 am »
Looks pretty good!
Looks like DCS7 cursor thingy
Sig wipe!

#### Munchor

• LV13 Extreme Addict (Next: 9001)
• Posts: 6199
• Rating: +295/-121
• Code Recycler
##### Re: Axe GUI Library
« Reply #2 on: April 06, 2011, 01:00:44 pm »
Looks pretty good!
Looks like DCS7 cursor thingy

Thanks

I finished the Draw Frame subroutine and here's my code for drawing the GUI in the GUI demo now:

Code: [Select]
sub(DB,30,30,30,10Text(34,32,"BUTTONsub(DB,40,42,30,10Text(46,44,"ABOUTsub(DF,1,"TITLE
And that's all!!!

#### AngelFish

• Is this my custom title?
• LV12 Extreme Poster (Next: 5000)
• Posts: 3242
• Rating: +270/-27
• I'm a Fishbot
##### Re: Axe GUI Library
« Reply #3 on: April 06, 2011, 01:06:46 pm »
Looks nice, but you could optimize the location detection routine if you are willing to accept aligned buttons,
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

#### aeTIos

• Nonbinary computing specialist
• LV12 Extreme Poster (Next: 5000)
• Posts: 3913
• Rating: +184/-32
##### Re: Axe GUI Library
« Reply #4 on: April 06, 2011, 01:18:50 pm »
Wow great job scout!
I'm not a nerd but I pretend:

#### Munchor

• LV13 Extreme Addict (Next: 9001)
• Posts: 6199
• Rating: +295/-121
• Code Recycler
##### Re: Axe GUI Library
« Reply #5 on: April 06, 2011, 05:36:14 pm »
Wow great job scout!

Thanks.

I forgot how to explain how to use the three subroutines so far, here I go:
----------------------------------------------------------------------------------------------------
Code: [Select]
sub(DF,1,"TITLEsub(DF,0,"NO CLOSE BUTTON
When you have 1 it draws a little X in the right upper corner, if you put 0 it won't.
----------------------------------------------------------------------------------------------------
Code: [Select]
sub(DB,30,30,30,10Text(34,32,"BUTTON
This draws a button at coordinates (30,30) with width 30 and height 10.
----------------------------------------------------------------------------------------------------
Code: [Select]
sub(DD,"ABOUT","PROGRAM MADE","BY DAVID","GOMES"Repeat getKeyEnd
This draws a message box (or dialog) with title 'ABOUT', and its text is the following:
Code: [Select]
PROGRAM MADEBY DAVIDGOMES
Each argument is a line.

Hope you got it

#### thepenguin77

• z80 Assembly Master
• LV10 31337 u53r (Next: 2000)
• Posts: 1591
• Rating: +823/-5
• The game in my avatar is bit.ly/p0zPWu
##### Re: Axe GUI Library
« Reply #6 on: April 06, 2011, 06:00:40 pm »
That is really impressive. It looks almost exactly like the way you do Windows stuff, just way easier.
zStart v1.3.013 9-20-2013
All of my utilities
TI-Connect Help
You can build a statue out of either 1'x1' blocks or 12'x12' blocks. The 1'x1' blocks will take a lot longer, but the final product is worth it.
-Runer112

#### Munchor

• LV13 Extreme Addict (Next: 9001)
• Posts: 6199
• Rating: +295/-121
• Code Recycler
##### Re: Axe GUI Library
« Reply #7 on: April 07, 2011, 09:11:46 am »
Looks pretty good!
Looks like DCS7 cursor thingy

Yeah, I used the same mouse sprite since I couldn't think of another way to do it.

Looks nice, but you could optimize the location detection routine if you are willing to accept aligned buttons,

What do you mean with that?

Also, I have added yet another GUI component, I'll show it to you later

#### Munchor

• LV13 Extreme Addict (Next: 9001)
• Posts: 6199
• Rating: +295/-121
• Code Recycler
##### Re: Axe GUI Library
« Reply #8 on: April 07, 2011, 10:11:05 am »
Update

I added a status bar, very similar to Windows's, which can be created by writing:

Code: [Select]
sub(SB,X,"TEXT"
X is the X position of the text, for example, for the image above I wrote sub(SB,62,"GUI DEMO.

I optimized the subroutines and the main code (in the loop) is getting much shorter. The GUI DEMO is only 2000bytes for now (the compiled version).

Attached is the source code of the GUI. It works better if compiled with Axe 0.5.1

#### Juju

• Incredibly sexy mare
• Coder Of Tomorrow
• LV13 Extreme Addict (Next: 9001)
• Posts: 5730
• Rating: +500/-19
• Weird programmer
##### Re: Axe GUI Library
« Reply #9 on: April 07, 2011, 12:02:27 pm »
That looks awesome

Maybe we could make an axiom with that?

Remember the day the walrus started to fly...

I finally cleared my sig after 4 years you're happy now?

This signature is ridiculously large you've been warned.

The cute mare that used to be in my avatar is Yuki Kagayaki, you can follow her on Facebook and Tumblr.

#### AngelFish

• Is this my custom title?
• LV12 Extreme Poster (Next: 5000)
• Posts: 3242
• Rating: +270/-27
• I'm a Fishbot
##### Re: Axe GUI Library
« Reply #10 on: April 07, 2011, 01:07:56 pm »
Looks nice, but you could optimize the location detection routine if you are willing to accept aligned buttons,

What do you mean with that?

Currently you're using M>X and N<X to kind of "trap" the cursor and detect it. However, you can take advantage of the fact that Axe doesn't use decimal math to get the position of the cursor with two lines and half as many comparisons per button. The disadvantage is that you're forced to give up some accuracy and flexibility in where you can put your buttons. Here's a demonstration of what I mean:

As you can see, the buttons are all triggered by clicking on them when the cursor is inside of their "area." It's a simple matter to only define those areas that you want clicked and the size of each click area can be fully modified.
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

#### Munchor

• LV13 Extreme Addict (Next: 9001)
• Posts: 6199
• Rating: +295/-121
• Code Recycler
##### Re: Axe GUI Library
« Reply #11 on: April 08, 2011, 10:01:03 am »
"Currently you're using M>X and N<X to kind of "trap" the cursor and detect it."

Exactly.

"However, you can take advantage of the fact that Axe doesn't use decimal math to get the position of the cursor with two lines and half as many comparisons per button."

No idea of what you mean.

Also, since this library is 200% open source, Ashbad is joining the team and will make a few changes to it, I hope he contributes

#### z80man

• Casio Traitor
• Posts: 977
• Rating: +85/-3
##### Re: Axe GUI Library
« Reply #12 on: April 08, 2011, 10:26:31 am »
I think what Qwerty means is that because the buttons are all located on a grid instead of randomly placed, you can add some optimizations. So correct me if I'm wrong, but you can find the cursor position on the grid by using x/width and y/height. Then using the 2 grid coordinates you can see if a button exists there.

List of stuff I need to do before September:
1. Finish the Emulator of the Casio Prizm (in active development)
2. Finish the the SH3 asm IDE/assembler/linker program (in active development)
3. Create a partial Java virtual machine  for the Prizm (not started)
4. Create Axe for the Prizm with an Axe legacy mode (in planning phase)
5. Develop a large set of C and asm libraries for the Prizm (some progress)
6. Create an emulator of the 83+ for the Prizm (not started)
7. Create a well polished game that showcases the ability of the Casio Prizm (not started)

• Guest
##### Re: Axe GUI Library
« Reply #13 on: April 08, 2011, 11:54:25 am »
I used a system that qwerty would like, but also added:

-pic support
-scroll bars (working)
-input boxes
-scripting language

#### Munchor

• LV13 Extreme Addict (Next: 9001)
• Posts: 6199
• Rating: +295/-121
• Code Recycler
##### Re: Axe GUI Library
« Reply #14 on: April 08, 2011, 11:54:51 am »
I used a system that qwerty would like, but also added:

-pic support
-scroll bars (working)
-input boxes
-scripting language