[APP] HP 48GX Emulator 1.18.1 - Touch Pro2, Tilt 2 Themes and Apps

For those who know what it is, I have created a complete install for the HP 48GX Emulator optimized for WVGA devices. The emulator itself is based on Sébastien Carlier's Emu48 (now maintained by Christoph Gießelink).
My goals were to have a realistic but finger-useable HP 48GX. I have included the complete package in a single CAB (the ROM is an HP 48GX-R model). As HP released the ROMs for all the 48 models about 9 years ago, I can't imagine them complaining that I'm packaging them together as a useful package these days
See the attached Todo.txt before posting any bug reports please. FYI, I do not really plan to address any of the Todo items anytime in the near future.
Enjoy!
HP 48GX-R 1.18.1
Change Log
2009.09.24
v1.18.1
Converted 709 KB bmp file into 94 KB gif with no data loss. The screen should now load much faster.
Updated CAB file installation to allow for Storage Card installation.
P.S. The thumbnail doesn't even begin to do it justice. I spent *DAYS* on the visual appeal of the interface and for anyone who owns/owned an HP 48GX I hope you'll agree the level of detail and realism is nearly perfect.
P.P.S. If you don't know what an HP calculator is, or more importantly what RPN means, then its probably not worth your time even trying this.
48GX State Files
I have now attached some state files which includes two .e48 files and a SHARED.BIN file. The SHARED.BIN file is a 512K Port 2-5 attached card which both .e48 files share. The files are as follows:
SHARED.BIN
Port3
EDFlags 2.0G
HPTabs (Part of the Jazz package, see below)
Hack 9.4.1 (Based on Hack 9.4 with my own customizations)
StringWriter 4.4
MiniWriter 1.2
SmartKeys 1.59
Port2
Unitman 7.2001
QPI 4.3
ALG48 4.2
ALG48_SpecialFunction 4.2 (Part of the ALG48 package, see above)
ALG48_LongPrecision 4.2 (Part of the ALG48 package, see above)
ALG48_SymbolicIntegration 4.2 (Part of the ALG48 package, see above)
ChemLab 2.7
Neopolys 6.5
Bode-Routh 7.1
HP 48GX-R Math.e48
Port1
Erable 3.201 Beta
Marable
Erable_MODULO 3.2 (Part of the Erable package, see above)
Erable_GEO 3.2 (Part of the Erable package, see above)
Erable_PREP 3.2 (Part of the Erable package, see above)
Erable_LIN 3.2 (Part of the Erable package, see above)
Matrix 1.2
MathTools 7.0
Universal Font Library 1.0.2
Port0
Java 3.6a
HP 48GX-R Dev.e48
Port1
Jazz 6.8
Universal Font Library 1.0.2
MathTools 7.0
Matrix 1.2
Port0
Java 3.6a
Included in the zip is a file called InstallConfigure.txt which is simply the steps I took to create the .e48 files. Please note that I did not include the application .lib files themselves, though I did link most of them above. Remember, you can always recall them to the stack and save to your device if you plan to use any of them to make your own state file(s) from scratch.
48GX WVGA Photoshop Source
If your goal is to modify the visual appearance of the calculator without modifying the position or operation of any of the keys (onscreen or keyboard) then you may be interested in downloading the Photoshop source (attached).
Using it you must create a BMP file that is dimensionally identical to the one included in my installation (else you must change the KML appropriately). This means that there must be the entire image with no buttons pushed followed by the annunciators, followed by an image with the buttons pushed (without the annunciators again though). See the BMP that comes with the installation to know what I am talking about here.
The photoshop source is currently set to output an image with no buttons pressed and the annunciators. You will save as a BMP image to get the initial image with annunciators. You must then hide all the appropriate layers (and there are MANY) for unpressed button mode, and finally show all the appropriate layers (again there are MANY) for pressed button mode. Now change the image canvas size (cutting 14 pixels--the annunciators) from the bottom of the image, and save this as a BMP image. You will then take the first BMP image, expand the canvas size by 748 pixels at the bottom, adding the second BMP image (with the pressed buttons) in that area. Then simply merge layers and convert that image to Indexed color mode (selective) and save as the final BMP image.
If you are planning on changing colors note that where possible all you have to do is select every appropriate text layer and then change the colors for all of them at once. However, you will notice there are two layers (one for text graphics, and one for button graphics) that you cannot do this. You may deal with these in one of two ways:
Use the wand tool selection with shift to select all items of a given color, and then use some form of Image|Adjustment|... to match the colors.
Recreate the items manually. This is where the HP48.csh file comes into play. These are vector items I created for some of the button graphics (and annunciators). Access them through the custom shape tool (load custom shapes from file).
The button pressed version of the button graphics is precisely the same as the non-pressed version, simply shifted down one pixel. So my recommendation there is to simply make changes to the non-pressed version, duplicate it, shift down one pixel, and make that the new (Pressed) layer.
If you spend the time to properly create a graphics file that you think others would enjoy, please upload it and the source for others!
Cheers!

I still have my 48gx from more than 10 years ago, now I am just a HP12c type of guy

Excellent Work! Much appreciated! I also have a Emu48 version used by a company called EaglePoint (used to be SMI). It is called Pocket SMI v8. I have a licensed version but it is no longer supported. It is basically a custom tweaked Emu48 with a different skin and kml script specifically for surveyors/engineers. I would like to modify the skin but I am not sure how to get started...

Very Nice! Thanks much!
You think you can skin it for my 48SX as well?
The GX colors annoy the heck out of me...

wow, I haven't tried it yet but will, awesome idea. I still have my 48GX from college but I doubt my professors would like me to use cell phone during tests.
Thanks, will try it.

Thanks!
Quentin- said:
For those who know what it is, I have created a complete install for the HP 48GX Emulator optimized for WVGA devices. The emulator itself is based on Sébastien Carlier's Emu48 (now maintained by Christoph Gießelink).
[...]
Click to expand...
Click to collapse
AWESOME!!!!

glhs509 said:
Very Nice! Thanks much!
You think you can skin it for my 48SX as well?
The GX colors annoy the heck out of me...
Click to expand...
Click to collapse
If you have Photoshop and some time/know-how to make minor changes (difference in keys) to the KML file I can provide you with the graphics source that you can work with to make an SX skin.

Thank you!

This is fantastic, I will be looking for any updates and improvements. Will test and report back.

Wow... that's amazing...
...Here's my HP 48SX from my college years (circa 1992) for comparison...

glhs509 said:
Very Nice! Thanks much!
You think you can skin it for my 48SX as well?
The GX colors annoy the heck out of me...
Click to expand...
Click to collapse
See the original post now for the Photoshop source files!

Version 1.18.1
For those that subscribe to the thread, this is notification of a new version in the First Post.
Change Log
2009.09.24
v1.18.1
Converted 709 KB bmp file into 94 KB gif with no data loss. The screen should now load much faster.
Updated CAB file installation to allow for Storage Card installation.

Thanks a lot for this.
If anyone doesn't know there is a HP Calculator Conference in Fort Collins, CO next weekend.
http://holyjoe.net/hhc2009/

help on resizing the skin hp48gx
I have tried to resize it with photoshop, but I don't know how to remap the keys.
Could be a way to include scroll bar option?
Thanks

Related

Skins for signal, connection and speaker icons in taskbar

Hi
Does anybody know where the skins are for the signal strength button the connection state button and the volume button are.
As you can see in the image below im trying to set a green theme with the txt on my exec and these icons don't go as they are white.
Many thanks
Scott
There built into some of the ROM dlls I think. Most people skin the bar with WisBar or similar.
V
I Suspected as much that these were related to dll's
Does anybody know which dll's they are.
I did use to use wisbar but i found that there was just to much lag with it.
I would like to know this to as i also think that wisbar lags up the device to mutch
Anybody got any ideas.
I think if we can crack this 1 it may also helps us understand how to remove the dam battery icon in the new imate rom and let us put the clock back.
shellres.96.dll
V
Microsoft design guidelines demand that these symbols remain white... Not that this will stop you but I thought you should know.
lbendlin
Is there anything on this board that is within the Microsoft guidelines!?
V
vijay555 said:
lbendlin
Is there anything on this board that is within the Microsoft guidelines!?
V
Click to expand...
Click to collapse
This looks kick ass! When did you cook this one now???
San, that's a screenshot from VJSmallIcons II, which will turn your "programs" launcher fullscreen and permit changing the view style (look up VJSmallIcons to see what the original did). The new version, although looking simple, requires a lot of voodoo in the background, but it's a test platform for stuff I'm developing for VJToggleToday II.
VJSmallIcons II should be out quite soon, just one or two more tweaks to retain settings in the registry and it'll be out for test releases.
scotjen1: to come back On topic, I've never tried overriding that dll, but I presume you could try the same technique used by Azhad here:
http://forum.xda-developers.com/viewtopic.php?t=34995&highlight=
to create a new resource dll to override the original icons etc. It'd be a nice hack to try.
V
V
Great work with VJsmallicons II looking good.
Now back to the skinning. I have managed to copy the shellres.96.dll (great work for that V would have never known that) to my desktop and have used resource hacker to extract the ico files from it.
I then found a program called easy icon maker (good program works well) and have managed to change the colour of these icons.
When i then replace the resource with resource hacker it show as if it has been replaced i then load the DLL back in to the windows dir and get an error saying this file is in use and can't be overwritten but i use resco and it gave me an option to continue which i presume forces it to be over written. I then soft reset and bang the icons are exactly the same. Any idea's ?
Also just 1 other thing when changing the icons they were set to 16 x 16 and 2 colours so i had to change this to 16 x 16 and 16 colours would this have made a difference also.
scotjen1: it's likely to be more involved then that (as if that wasn't enough!).
You will have to have a read through Azhad's thread above, and the VGA files thread. What you need to do on WM5 is, I believe, although I have no direct experience in this area, is to create a resource only dll containing the icons you want to replace. 16 colours should make no difference. But I believe the resource ids need to match the original.
That needs to be signed (check the first few VGA files posts for info of how this was done originally, and find the signer, called SignIt, posted by BeyondTheTech I believe), and then save the file as an .mui file so that it gets loaded over the top of the original shell file. That shell file is unlikely to be replaceable whatever Resco thinks.
Have a read through Azhad's thread, decompile his .mui files and that should point you in the right direction.
V
V
Wow that does sound quite a challenge still though im not going to let it beat me lol.
I have got Azhad's files at home (i presume you are talking about the power backlight and wifi files) i will have a go at trying to decompile them tonight see if it can shed some light on the situaion.
As for the signing wasn't there a cab flying around somewhere that disabled this or am i completly going off track here.
You still need to sign the dlls for WM5.
SignCode:
http://forum.xda-developers.com/viewtopic.php?p=191136#191136
I really can't say if any of this is correct, as I said, it's something I've thought about but never bothered with. I'm working on my own skinner for the bar, but this method should be effective + no overhead.
You don't need to decompile Azhad's stuff, just resource hack it to see what he's put in the dlls. In fact, use his dlls, empty it out, stuff it with your stuff and re-sign.
V
Nice that sounds a little bit easier lol.
Will give it a try when the work day ends will keep you posted on the progress.

iTask Animated 0.92.5 29.feb -RELEASED!!

Release 0.92.5 of iTask:
-------------------------------------------
Please don't get upset if I change something on each release, or that it is hard to modify. I know all this, and it is in everyones interest to make iTask work smoothly in every way, before making a good settingsprogram. If not, the settingsprogram would need changes every time I modified something in iTask, and that would slow down the whole development progress.
This is a development-in- progress app. This means you can use the beta, before the final release, and I get some feedback on bugs. Thankfully some in the community has taken a keen interest in sharing feedback, and therefor iTask Betas are still coming pretty often.
I know it's hard for some people to edit the input.txt and I hope someone with programming knowledge will be up for the task of creating a settingsprogram for iTask when I come to 1.0. I do not know much programming, only Flash.
Thanks, Rhov23
-------------------------------------------
Place folder at "root of your device"
Image of where the root is, and where to place folder:
ROOT
VIDEO OF ITASK 0.91
-You need to install Flash lite 2.1 player
-Itask.zip is the old version. itask_0_92.zip is the next and itask_0_92_5.zip is the newest.
-WHEN YOU OPEN iTask for the first time, or after a soft reset, or if unread sms or contactlist is not working, run SERVER.EXE.
Server.exe runs invicible in the background.
OPEN WITH ITASK.SWF
A GOOD TIP FOR EDITING: If you have a copy of the itask-folder on your computer, you can use flash player in Windows to play it there as well, for quick reference when you add images or text. Instead of dpad button, press enter
Newest 0.92.5
-Added many variables to input.txt so non-english can modify more.
-Added some variables to new background images, so you can for example change the background of the Minical or contacts
-Made contactapp a bit prettier, and you can now click on phone to make a call, or email to email a contact (if you have email for that contact).
-Teleprovider name
-Name of wifirouter
-Name of bluetooth connection
- Username
-Small fixes
Done 0.92:
-Unread sms
-Unanswered calls
-Unread email
-Buttons can now be gif/jpg/swf/png(with transparency)
-20 more app buttons ( open apps, slide to right)
-Slide to unlock has been changed to be a execute link instead, so now you can use a better screenlocker
-Changeable background for news and settings.
-You can use gif/jpg/png/swf for background-image as well
-Write has been moved to iProgs, so now mainbutton1 is open for external app.
-Rubik's cube game
-Soccer tricks game
-Sokoban game.
-Tetris look upgraded.
-Contacts app Alpha version.
-Many small fixes
-Volume and network or other system info not fixed yet.
Done 0.91:
-Rewritten from flash 7 to Flash lite (Painstaking!)
-New news reader (looks the same, but all new because of flash lite limitations on the old one.) It's faster, you can add as many feeds as you want. Use right/left hardbutton to change feeds. Also added browser link for reading the whole article.
-New calendar (because the old one didn't work in flash lite)
-Rewrote parts of weather. (because the old one didn't work in flash lite)
-New drawing app. Much smoother, more functions.
-New timer. (because the old one didn't work in flash lite)
-New snake game
-New bubblebreaker game
-New solitaire! (this took an awful long time to make)
-Added 4 search functions to write
-Added urls.txt: rss feeds addresses should be put here
-New loadani.exe: Screenshot app. Takes screenshots of all your apps and saves them as the appropriate loadani. Start the exe and see what I mean.
-Many small fixes
To do (in the near future)
- Your ideas (not to complex, please)
MODIFYING:
-Input.txt is where you do all text/execute modification.
All buttonimages are adressed in this file by numbers from 1-X, from the top left to the bottom right. Same with text, executelinks etc.
-Buttons should be 40x40 pixels.
Background images: 240x320 pixels.
-All jpg files MUST be NON-PROGRESSIVE. Keep the file sizes low.
Hope you like it!
This is a developing in progress app. I need feedback!
Please DONATE what you think this app is worth for you, if you like it of course
Downloading...
Edit: this is really nice! it is from my first tests very stable, not found any bugs at all yet.
maybe now you could try and make the frame rate per second higher, so that the animations would go smoother,
i am no programmer and i dont know if thats possible with mortscript..
keep it up! o and the spider walking down the keyboard is funny!! haha
PS: Thanks
Its a very nice looking interfece, but i agree that it needs a larger frame rate, so the animation is smoother. Starts instantly though. Ive got a problem in that it launches calculator no matter what icon i press. And, before it launches calculator, it says please post a screenshot of the application you use here or something similar.
Looks very promising, I'll try it soon...
Any chance of some screen shots guys?
geekyhawkes said:
Any chance of some screen shots guys?
Click to expand...
Click to collapse
check the other itask threat, there you have a whole video on youtube
Any first thoughts?
check my first post
Can anyne download the mortscript, and flash Player 7 over here ?
bronson25 said:
Can anyne download the mortscript, and flash Player 7 over here ?
Click to expand...
Click to collapse
http://www.sto-helit.de/index.php?module=download&action=list&category=17
http://www.adobe.com/products/flashplayer_pocketpc/downloads/player.html
Very nice for a first release. Well done !
1) Still didn't check all options, but as tomazez stated, a better frame rate would be great. It's not as smooth as Pointui or other UI replacements.
2) I don't know what's the need for the page that opens after clicking on a program's button (the one we should replace with a jpg pic) I'd prefer getting immediately to the program/settings page.
Working on a Trinity WM6 Bepe 0.79.
rhov23 said:
http://www.sto-helit.de/index.php?module=download&action=list&category=17
http://www.adobe.com/products/flashplayer_pocketpc/downloads/player.html
Click to expand...
Click to collapse
hello, i have installed the itask.exe in the windows folder and the three folder in program files, but i have no image and icone .
why, thanks.
eldoume said:
hello, i have installed the itask.exe in the windows folder and the three folder in program files, but i have no image and icone .
why, thanks.
Click to expand...
Click to collapse
Read first post thoroughly. It's to the root. Not the windows folder.
sorry but what is the root, i m french
thanks
rorydaredkign said:
Its a very nice looking interfece, but i agree that it needs a larger frame rate, so the animation is smoother. Starts instantly though. Ive got a problem in that it launches calculator no matter what icon i press. And, before it launches calculator, it says please post a screenshot of the application you use here or something similar.
Click to expand...
Click to collapse
This is where your modification comes into play.
The image that comes before you launch calculator is to be replaced by you, with a screenshot of your program. If people will begin to share screenshots and icons, this will be a lot easier for all of us
Most links are defaulted to calculator, but in the input.txt file you can change the links to whatever you want.
eldoume said:
sorry but what is the root, i m french
thanks
Click to expand...
Click to collapse
the root is like C:\ in "Windows XP/Vista"
rhov23 said:
the root is like C:\ in "Windows XP/Vista"
Click to expand...
Click to collapse
i have tested to put the itask.exe into the root and application data.
not works.
for the three folder : windows/programfiles/itaskpics
?????
place all items in the folder which displays application data, my documents, program files, windows, etc.
also the main folder for " My Device "
eldoume said:
i have tested to put the itask.exe into the root and application data.
not works.
for the three folder : windows/programfiles/itaskpics
?????
Click to expand...
Click to collapse
just put everything from itask into "\"
@rhov23
Beautifully done! With some work, this could blow FreeStylWM and PointUI Home out of the water! Provided that we all get the video driver needed by all HTC products using the MSM7200 chipset, do you think that this will improve on the speed with some DirectX code thrown in? I'm no Windows Mobile developer (yet) but I'd love to help with this wonderful project (even if it's MortScript modifications or beta testing!)

[03/29/08] Perptual v0.3 with image viewer

Perpetual is a simple image zooming demo.
You can zoom on any of the 200 images, and the pixels will turn into other images to zoom, perpetually.
What is it for ?
Nothing ! It's just a proof of concept and a demo I made...
If you have any images to submit to add into the demo, feel free to post in the forum and we'll update as soon as possible ! I'm looking for images that have nice colors and an overall dominant one (that'll be used for the color detection) Thanks for helping support this useless project !
Download Perpetual​
Also available :
Perpetual Image Maker
Sexy Image Pack
Kaiser47's DeviantART selection (really awesome pack !)
SaintSeya pack
Zen nature pack
v0.3 (03/29/08)
- New prp format (old ones should still work though) with additionnal data : author, icon, etc...
- New menu using the new prp format data, looks much better !
- Now saves viewed purcentage !
- Now works with Smartphones !
- Fixed menu bug if you had too many packs
- Much higher image quality while zooming
v0.2
- Fixed image bug when you have more than 256 images (that was stupid)
- Fixed potential crash when moving around too much
- Fixed surface bug when you moved around
- PerpetualMaker updated, smaller exe
- Improved performance
- New image viewer to select start image
- Now over 300 images !
- New Image Pack maker : just put in any directory, and it'll take all the images from images/ (still requires 240x240 jpeg images) and do a pack (.prp file)
- New splash screen, with possibility to select pack to display !
- Fixed random crash when changing speed while in auto mode
- Speed button : x0.5, 1, or 2
- Auto button for lazy people
- Surface button to come back to the unzoomed image
A video is available on that page if you want to see what it looks like without downloading/installing
Thanks for the feedback, suggestions, and images !
Fascinating software - it works perfectly in portrait, its a bit slow and landscape, and it doesn't handle the change from portrait to landscape well.
Thanks for making my Kaiser much cooler however.
Any way the process could be automated, to make it into a semi-interactive screensaver?
Surur
Well, technically, it's automated on my PC (there's no way to add all the needed data for the colors of the 200 images alone ^^) : I just have a folder with the images, launch my .Net app, and it scans through all the images, sorts by color, and outputs both miniature views (to avoid overloading the memory) and a huge array with the number of the image to use for every 16bit color ^^
It takes a while to run on my PC, so it's unlikely to work on in realtime, would have way too much loading time. I have just thought of an alternative method to build the color array, it could work much faster, but would only be available for real-time if you have only a few images... and if you don't have many images, well... It won't work to well ^^ You need to have at least 50 or 100 photos, ranging in pretty much all the possible colors (my PC app outputs which colors are overpopulated and which aren't populated enough, to know which images to remove and what colors to search for) ^^
While it would be cool to use my own pictures, it would be nice to see it zoom through the stock images without me having to touch the screen with the stylus too, independently.
Surur
Well, this is a first release, I just wanted to have a quick proof of concept and that's it ^^
The future stuff that could be added :
- "Surface" button (to move back up)
- Auto button (could be nice to for lazy people ^^)
Anything else ?
A zooming back feature would be cool
sercio said:
A zooming back feature would be cool
Click to expand...
Click to collapse
Would that be for the skin-tone pictures ?
Surur
yeah
Btw there should be alot more pictures kind of ^^
This looks really cool I will have to try this on my Hermes. Does it work for VGA and Qvga?
*Edit* Only Qvga any plans for VGA? *Edit*
Alkhal said:
*Edit* Only Qvga any plans for VGA? *Edit*
Click to expand...
Click to collapse
Well, it should work on VGA, just that it's upscaled. I tested on emulator and the performance was good.
In theory, a 100% VGA version could be done. But the program is already 5MB, uses a lot of ram for all the images, and a full VGA version would just use 4 times more ram :s
Btw there should be alot more pictures kind of ^^
Click to expand...
Click to collapse
Feel free to post some images (or send them by mail/PM) and I'll add them ^^
*Edit*
Ok here are some random Pictures i found and had on ma system! I extra made them 240x240 so you dont have any work rescaling them
Btw i would like if the "zooming" effect could be more smoother and slower if its possible...
Hope you like ma pics!
Regards
Thanks, let me check that out.
As for zooming, the speed can be changed, not a problem I didn't actually test on hardware, just on emulator, so it might not be optimal yet...
TODO list (note to myself) :
- Auto-zoom
- Back button
- Speed button
edit : hey, nice set of pics I'll definately include most of them in the next release (either as additional pictures or as a remplacement. like flickr-color-picker.jpg which will be perfect to replace a sort of crappy image I had in the same style ^^) Thanks !
edit2 :
Better not or are you willing to made a "special" adult version ?
Click to expand...
Click to collapse
Could be fun if you know where to find nice pics (IE, with nice and different colors, won't be as simple)
edit3 (last one, I promise !) :
Still looking for a good theme for the icon and the viewer, if anyone has an idea, please share !
I found few random pics... hope you can use them
Yay, those are awesome !
I'm currently finishing a set of 50 sexy photos, then I'll see if it works good enough with those
Cool and amazing app! Works perfectly on WM2003! Keep working
I think that you should make other app like that: http://www.mazaika.com/mazdownload.html for ppc (WM 2003 support for sure! ).
Nice work!
Thanks for the link. That one seems nice too, but the images are in 64x64, whereas I use nice and big 240x240 images ^^ I'm thinking of modifying my PC .Net exe and redistributing it... It could produce a file like myimages.prp which would contain all the data needed, and could be copied on the PPC to open it...
As for SexyPerpetual, tested, it works pretty well ! The images aren't the best as I used the first image pack I could download on bittorrent. Not sure what the forum policy is for the kind of stuff, so I will not post a link to download it. Just send over a quick PM requesting the link and I'll answer back
As for the video, if you want to take a look, here the link for the normal version's video : http://www.palib.info/blog/flvplayer.swf?file=http://www.xflib.net/Games/Perpetual/Perpetual.flv
Just keep replace the name by the sexy version's name and you should be able to view it (if the admins don't want this posted, please just tell me and I'll remove it !)
yes it woudl be cool if you can provide a tool that we can use to compile "our" versions with our pictures. it would be simpler than having to make special requests to you and sending many pics ?
but also if you really want pics, perhaps we can all send some to you ? public ftp or classic sharing sites like rapidshare ?
SexyPerpetual is very nice But insert "more naked photos" xD
BTW: I like kaiser47s idea
Kaiser47, feel free to use any method to send of photos
Yeah, I know, the sexy version misses a few naked photos ^^ But I just took a pack found on bittorrent, and used the ones with the most colors (because if I use only naked women on a white background, the transitions will be crappy, so I needed to have blue, red, etc....). If you have a pack with nice naked photos, I'll add them to the pack
I'm currently modifying the PC part of the code to generate a special file which could be distributed and read by the PPC app, that way anyone can do an image pack
Cool idea
I do not have ones so I will w8 for new versions xD

Open Source Today Screen Widgets app

There are a lot of clock area today screen apps out there, from the simple such as PDClock, through mid-level stuff like HTC home, up to the fully customizable rlToday.
Few of these seem to be a good all-round solution though, except maybe rlToday, but I am having issues with the rlToday / Sys-to-Reg / Mortscript combo, both in terms of features (ie no support for "on" or "off" images), stability, and ease-of install (S2R seems a bugger to set up right, especially for the less technically inclined user), and the whole rlToday / S2R / Mortscript combo is hardly a turnkey one-install solution.
So to that end, I decided to try my hand at crafting a solution more appropriate to my needs.
Now, until this point I have never coded for C++ or windows mobile. I am not even a professional coder, far from it, but I do have a knack for designing good solutions, so I thought I would start teaching myself native C++ and see what I could come up with. Ultimately, my goal is to release as open source, I am hoping to maybe start a sourceforge project at some point...
I am making this post because I am now starting to get past the proof-of-concept stage and am coming up with some working code. I am tackling the various hurdles one by one and learning as I go, but it is starting to look promising.
This thread is to serve two purposes:
1) Gather my thoughts on how things are going to work so potential users can chime in on possible tweaks or changes to the features and how they should work.
2) Serve as a rallying call for any (preferably more experienced) coders who wish to get involved. I will post up any problems that I am having surmounting various issues, please feel free to help out on those. If an experienced coder liked the project that much and wanted to take the lead, I have no issues with that, as long as it remained open source.
So, with that out the way, here is what I am thinking so far:
Overall idea is pretty similar to rlToday - a script (ie a .INI or .XML file) which lists Widgets is processed and the result is drawn on the screen.
For example, here is an example INI file for a background (say transparent) PNG with a clock overlaid in the middle of the PNG, that has different layouts / images for portrait and landscape mode on a qVGA device.
Code:
;ini profile for qVGA (240 width and 320 width)
;PORTRAIT
[PortBG]
width=240
widget=image
clickable=0;
image="bgport.png"
x=0
y=0
[PortClock]
width=240
widget=text
subwidget=clock
clickable=1
clicktype=exe
clickstring="<exe to launch calendar>"
dateformat = "dddd MMMM d"
x=120
y=25
origin="cc"
;LANDSCAPE
[LandBG]
width=320
widget=image
clickable=0
image="bgland.png"
x=0
y=0
[LandClock]
width=320
widget=text
subwidget=clock
clickable=1
clicktype=exe
clickstring="<exe to launch calendar>"
dateformat = "dddd MMMM d"
x=160
y=25
origin="cc"
The [Name] of each section actually does nothing, but it will be useful in debugging / error messages ("Image for [PortBG] not found!").
Widget = choses which kind of widget it is (eg Image, Text)
subwidget = choses the subtype of widget (eg clock is a subtype of text)
The Width= entry is an idea I came up with to handle multiple screen orientations and resolutions within one profile. Basically, as this is not intended to be a full-screen app, the only relevant dimension is the screen width. Each widget therefore has an associated width. When the screen is rendered, it will check what the current width is and only render widgets that match that width. Furthermore, if a script has entries for resolutions not supported by your device, these will be ignored. Profiles are likely to be a directory with one .INI file and assorted images. Images can be in subdirectories, say grouped by width (ie a "240" dir and a "320" dir for qVGA) - that way you could release a skin as one zipped dir that supported all devices and resolutions, and you would not need to upload the "480" and "640" dirs to a qVGA device, thus saving storage space.
Each widget also has x/y coords, which usually refer to the top left, but the origin entry can change that (eg cc would be centre horizontally and vertically)
Each widget will also be able to be specified as clickable, with options as to what to do when it is clicked.
With this system it should be possible to create most things, however, here is what I am currently NOT planning on doing:
I am not aiming at offering tabbed pages of widgets, or an easy way to change widgets without writing a new script. This is aimed at a companion to something like UltimateLaunch for handling the top of the screen - a Clock, SMS / Missed Calls / VM messages, BT / WiFi status and toggles etc.
I am currently using VS2005 and the WM5 SDK, but the app is still so simple that this could probably be changed. I would like to support as much as possible, but am not overly worried about providing backwards compatibility beyond WM5. I am using Native Win32 - I want to avoid as much bloat as I can.
Planned features:
Per-pixel Alpha PNGs - IMPLIMENTED
Widgets parsed from INI - IMPLIMENTED
Parse only items from INI that match screen caps - IMPLIMENTED
Display only items that match current screen width - IMPLIMENTED (Effectively switch profile on screen orientation change)
Options screen to set current profile
Widgets
======
Text Type: - IMPLIMENTED
Source: String in INI - IMPLIMENTED
Source: String in Registry
Source: Date from format string - IMPLIMENTED
Image type: - IMPLIMENTED
Plain image - IMPLIMENTED
Status Image - Registry value
Toggles - BlueTooth / WiFi / Phone etc
Other features
===========
Multiple screen resolutions supported per INI - IMPLIMENTED
Detect Power but no Activesync - Allow enabling of BlueTooth for automatic pairing with in-car BT handsfree.
Current questions and stumbling blocks:
Having issues finding a lightweight way of displaying per-pixel alpha PNGs. Current thinking is that AlphaBlend is perfectly capable of doing the blending, it is just SHLoadImageFile that is stripping the alpha info.
See threads here and here
Not sure how I am going to handle toggling of BT / WiFi. Could use VJ's tool, but I would rather do it in my code. Any pointers on how to do it and maintain maximum WM5 / WM6 compatibility would be appreciated - VJ's tool will not toggle WiFi on my Kaiser anyway...
Could do with decent chop and chomp routines (split by char and remove leading / trailing whitespace) - does anyone know an easy way to do this in native code?
Need to work out how to find the size of a text string in pixels *before* it gets drawn to the screen with ExtTextOut
Need to impliment a date format string to text string converter that can handle date and time objects in the same string
Currently I use a bit of code to look at the string and pass it to either GetDateFormat or GetTimeFormat, but not split the string and pass relevant bits to relevant routine, then reassemble.
Need to make whole thing a today item, but delaying doing this as it seems that debugging will be harder? I also guess this would be quite easy, so I am planning on leaving this until near the end. Any advice on this subject would be appreciated.
I am interested in this. I don't know C++, but I have experience coding with other computer languages. I'll definitely be following this thread and watching for updates.
iContact source contains some pretty lightweight INI library. It isn't written by me, and it's called SimpleIni. Everything is contained in one .h file and it's very easy to use.
good luck,
larna
larna said:
iContact source contains some pretty lightweight INI library. It isn't written by me, and it's called SimpleIni. Everything is contained in one .h file and it's very easy to use.
good luck,
larna
Click to expand...
Click to collapse
Nice one, thanks
I got simpleini in and working - you were right larna, it was really easy and pain-free. Thanks!
Update:
I have a working prototype.
All basic functionality coded - text and image widget types, orientation switching, ini parsing...
Currently still not a today item, and there is loads to do in terms of error checking and freeing up memory etc, but it parses INI files OK
Once I have done some tidying up, I will release some source and maybe a demo EXE.
Hey!!
I'm already developing an application which load and extends rlToday Themes!
sources will be released soon!
The app is XIAMultitheme:
Done:
- fully working rltoday themes on a HWND
- done today plugin
- loading external dll
- all widgets are external dll
To do:
- avoid image loading via ImageFactory due to memory leak on wm6x
- port to CxImage to load PNG
- use AAROT to free rotate images (analog clock)
- today plugin does not load the engine yet
http://www.xiaprojects.com/?section=All&project=XIAMultiTheme
what do you think? mail me on priv (stefano) on xiaprojects.com
stefanux said:
Hey!!
I'm already developing an application which load and extends rlToday Themes!
sources will be released soon!
The app is XIAMultitheme:
Done:
- fully working rltoday themes on a HWND
- done today plugin
- loading external dll
- all widgets are external dll
To do:
- avoid image loading via ImageFactory due to memory leak on wm6x
- port to CxImage to load PNG
- use AAROT to free rotate images (analog clock)
- today plugin does not load the engine yet
http://www.xiaprojects.com/?section=All&project=XIAMultiTheme
what do you think? mail me on priv (stefano) on xiaprojects.com
Click to expand...
Click to collapse
hi stefano
i see nothing on your web site , nor screenshots nothing in download binaries
Why ???
evilc said:
Update:
I have a working prototype.
All basic functionality coded - text and image widget types, orientation switching, ini parsing...
Currently still not a today item, and there is loads to do in terms of error checking and freeing up memory etc, but it parses INI files OK
Once I have done some tidying up, I will release some source and maybe a demo EXE.
Click to expand...
Click to collapse
can you upload here the demo program ?
Sounds pretty neat!
I don't understand some of the terminology you use, but I think you may be talking about a feature I had an idea for:
profiles (XML files) can be associated with a today plugin such that you can make a profile appear in the today plugins list for each skin (XML file) you have installed - thus making each XML profile behave like it was a today plugin in it's own right.
Is that what you are talking about?
brunoisa10 said:
can you upload here the demo program ?
Click to expand...
Click to collapse
Demo uploaded to first post. Unzip it to \Storage Card\shared on your device and run.
BE AWARE, there is very little error checking when parsing the INI.
If you omit a horizres line for any widget, for example, the program will crash.
Well I checked out XIAMultiTheme and it looks promising.
I was not aware that there was a memory leak bug in IImagefactory, I wasn't planning on using it in the final version anyway, so no biggie.
If XIAMultiTheme is capable of doing what I had envisaged for openClock, I will probably stop development, as you obviously know what you are doing much more than I do
However, a couple of points:
1) Size.
XIAMultiTheme seems to be a lot bigger and requires .NET - This seems to mainly be to do with the CxImage library - just PNG support seems to add more size than my entire app is! I am flabberghasted that supporting per-pixel Alpha PNGs takes this much, an alphablend routine can be done in a K or two, hundreds seems overkill. Apart from the requirement for rotation (for analogue clocks) I do not see why a full image lib is needed. Just a load and alpha blit.
2) Orientation awareness.
As in I don't see any in XIAMultiTheme. I am really happy with the way I have handled this in openClock - each item in the INI (XML in your case) has a "horizres" value associated with it. At render time, current screen width is compared to each item's horizres and if it matches, the item is drawn, if it doesn't then it isn't shown.
This provides a nice way to combine portrait, landscape and multi-res capabilities into one theme. And as long as you allow relative paths in the theme(eg 320\320bg.png, 240\240bg.png, common\common.png) then you can have a theme which supports all resolutions and orientations, and allow the user to store what they want on their PPC (eg if their device is qVGA, they know they do not need to put the 640 and 480 dirs on their PPC for a given theme, as they won't be used)
3) Stateful buttons.
Items like a voicemail button / wifi button etc should probably have two images associated with them - one for "no messages", one for "have messages". I was planning on putting something in openClock along the lines of specifying a reg key, an operator and an image.
eg:
regkey=HKEY_LOCAL_MACHINE\...
on=thisimage.png, gt, 0
off=thatimage.png
To set to thisimage if the key is of value greater than (gt) 0 or thatimage.png if not.
Good luck!
evilc said:
just PNG support seems to add more size than my entire app is!
Click to expand...
Click to collapse
Yep. Same goes for MortButtons... (and MortPlayer, but there, the player itself is bigger in relation...)
I am flabberghasted that supporting per-pixel Alpha PNGs takes this much, an alphablend routine can be done in a K or two, hundreds seems overkill.
Click to expand...
Click to collapse
The alphablend routine is in the Draw method, and even in source code not much more than 1kB.
The trouble is to load the PNG without losing the alpha information. With Windows' API, you can't do it - there's only the crippled SHLoadImage. So you need the entire code to decode PNGs, i.e. libpng, which in return requires zlib - over 200kB only to load PNG! The remaining kBs are spend to load/decode JPEG (quite some kBs, too), GIF (if enabled), BMP, ... and some basic image processing (resample, rotate, ...).
btw, you might want to check MortImg.dll and MortImage.lib, which is a (quite) simple wrapper. If only one image library is used, at least some memory on the device is saved (and if MortButtons or MortPlayer since b72 is used, also main memory).
Check out http://mort.svnrepository.com/svn/mort/MortTools/trunk with any SVN client (e.g. Tortoise), use "guest" for login and password.
evilc said:
Well I checked out XIAMultiTheme and it looks promising.
I was not aware that there was a memory leak bug in IImagefactory, I wasn't planning on using it in the final version anyway, so no biggie.
If XIAMultiTheme is capable of doing what I had envisaged for openClock, I will probably stop development, as you obviously know what you are doing much more than I do
However, a couple of points:
1) Size.
XIAMultiTheme seems to be a lot bigger and requires .NET - This seems to mainly be to do with the CxImage library - just PNG support seems to add more size than my entire app is! I am flabberghasted that supporting per-pixel Alpha PNGs takes this much, an alphablend routine can be done in a K or two, hundreds seems overkill. Apart from the requirement for rotation (for analogue clocks) I do not see why a full image lib is needed. Just a load and alpha blit.
2) Orientation awareness.
As in I don't see any in XIAMultiTheme. I am really happy with the way I have handled this in openClock - each item in the INI (XML in your case) has a "horizres" value associated with it. At render time, current screen width is compared to each item's horizres and if it matches, the item is drawn, if it doesn't then it isn't shown.
This provides a nice way to combine portrait, landscape and multi-res capabilities into one theme. And as long as you allow relative paths in the theme(eg 320\320bg.png, 240\240bg.png, common\common.png) then you can have a theme which supports all resolutions and orientations, and allow the user to store what they want on their PPC (eg if their device is qVGA, they know they do not need to put the 640 and 480 dirs on their PPC for a given theme, as they won't be used)
3) Stateful buttons.
Items like a voicemail button / wifi button etc should probably have two images associated with them - one for "no messages", one for "have messages". I was planning on putting something in openClock along the lines of specifying a reg key, an operator and an image.
eg:
regkey=HKEY_LOCAL_MACHINE\...
on=thisimage.png, gt, 0
off=thatimage.png
To set to thisimage if the key is of value greater than (gt) 0 or thatimage.png if not.
Good luck!
Click to expand...
Click to collapse
thanks you for your good words
1) beta version will be lighter ... (need to known what image loader use)
2) will be done on Page component (tab themes are already working)
3) will be done on sensor dll with "regex" (maybe)
XIAMultiTheme is in alpha development...
I would like to "merge" code with you or may be DLL collaboration.
XIAMultiTheme does NOT need .NET it's low level GDI "C" source
When XIAMultiTheme go on Beta status the dll will be around 10kb
Configurator is .net
Thanks you
Thanks for that mort!
However, if my entire app is (currently) 61K and it supports per-pixel alpha PNGs (Via the apparently bugged IImagefactory), then surely it is more than possible in less than 100K.
It seems like libpng must be grotesquely bloated for our needs. In an ideal world, someone would re-code SHLoadImage to not lose the alpha channel for PNGs. Maybe a workaround would be to convert the PNG into a 32bit per-pixel BMP with alpha before it is passed to SHLoadImage, as SHLoadImage deals with alpha BMPs just fine and AlphaBlend works just fine with AC_SRC_ALPHA data.
stefanux said:
thanks you for your good words
1) beta version will be lighter ... (need to known what image loader use)
2) will be done on Page component (tab themes are already working)
3) will be done on sensor dll with "regex" (maybe)
XIAMultiTheme is in alpha development...
I would like to "merge" code with you or may be DLL collaboration.
XIAMultiTheme does NOT need .NET it's low level GDI "C" source
When XIAMultiTheme go on Beta status the dll will be around 10kb
Configurator is .net
Thanks you
Click to expand...
Click to collapse
Hi stef,
I am more than happy to help out on your project with design ideas, testing and proofreading of english translations.
I have plenty of ideas on what the ultimate today screen widget app should feature, I just had to set my sights lower due to my (lack of) coding abilities.
Do you have a forum or something on your site? I don't see one.
I am slightly concerned about point (3) and your regex example. I would maybe try and keep it simpler, XML is already a little complicated for non-technical users to understand, throwing regexs into the mix may be the straw that broke the camel's back. That's why I went with INI files - simpler to use for lusers
evilc said:
Thanks for that mort!
... it supports per-pixel alpha PNGs (Via the apparently bugged IImagefactory), ....
Click to expand...
Click to collapse
Please try to do this test:
load 20 png's with imgfact. and start drawing all of them like a simple animation for 10 fps... image[]->Draw() after 5 minutes my application will blow up my pda (wm61) I thinks it's a "COM" bug because it happend only calling "Draw"
stefanux said:
Please try to do this test:
load 20 png's with imgfact. and start drawing all of them like a simple animation for 10 fps...
Click to expand...
Click to collapse
Are you kidding??? 10FPS? I have a kaiser!
Seriously though, if we can get a code snippet that proves this, surely we can get MS to issue a patch?

Another resolution changer

No one else seems to be in a hurry to write a new resolution switcher so I made one myself.
I designed it mainly for Win8 on the HTC Shift but it would be easy to modify for whatever.
Some screenshots:
Features:
Separate resolutions for desktop (1024x600) and Metro (1152x864)
All resolutions easily changed in the .ini file or the source
Doesn't force the desktop to show when executed in Metro (like the default switcher from HTC)
The window that displays the resolution afterwards is optional
A simple installer that allows you to set either of the right hand buttons to run the switcher
Rar file contains these files
A compiled .exe
.bat file calling the installer/uninstaller function (optional)
.ini file containing the standard settings (optional)
You can download the source from my thread at the AutoIt forums, Resolution switcher.
To use simply extract the archive somewhere (anywhere) and run the .bat file to select which button to use, then log out/log in or restart the computer for the new settings to load.
To go back to the default settings, run the .bat again and press cancel when it asks you what button to install to.
(previous downloads: 66)
Thank you!
Sincere thanks for this, just got my shift up and running in 8 and this is very helpful. Thanks for taking the time to do this work and for your willingness to share!
Thank you for your interest roll0ver. It's nice to see I'm not the only one that still has a Shift! :highfive:
I made some updates:
Now also detects Metro apps and not just the Start screen. I don't think I mentioned that limitation before. Oops!
Does not jump to a lower resolution while in Metro (by default). Metro copes with resolution changes by closing all applications. Very annoying.
I have not done any work on supporting multiple monitors, but it kinda works as long as the internal display is the "main" one.
Download is in first post.

Categories

Resources