Related
Folks,
I have created a small photo viewing application that I wanted to publish to the world. Key features are
- Native C code. No dependencies on .NET or any other library
- Tiny (just 25Kb)
- Full screen photos with gestures and hot-spots
- Slide-show mode
- Nice transitions (you can see them all in the slide show mode)
I have tested this on my GPS (CE 4.2) and PDA (Hermes) and it works quite well.
Gestures:
- Slide left to go to next photo in list (You can also use the wheel down for this)
- Slide right to go to previous photo list (You can also use the wheel up for this)
- Slide up to go to last photo in list
- Slide down to go to first photo in list
Hot Spots
- Top left to open a specific folder. Folder navigation is done by sliding up and down and select the <This Folder> to select
- Bottom left to open a specific photo. Again, you can slide up or down or go to a specific folder
- Bottom Right to start/stop slide show mode. Slideshow is 3 seconds. You can change the config file to specify different interval
- Top right to exit
- Right edge of screen to go to next photo in list
- Left edge of screen to go to previous photo list (You can also use the wheel up for this)
- Bottom edge of screen to go to last photo in list
- Top edge of screen to go to first photo in list
Configuration
CEPhotoViewer saves its configuration in CEPhotoViewer.cfg in the same folder as the exe. This file contains the last open folder and the slide show timeout
Startup
- On startup CEPhotoViewer looks for any JPG/BMP/GIF images in the program's folder. Else it prompts you to select a folder. Once selected the config file is created and subsequent runs, it will automatically pickup that folder
Bugs
- CEPhotoViewer uses native microsoft DLL to load a image. Depending on the speed of your CPU, this loading might be slow. Photos resized to the correct size (under 640x480) load pretty quickly. Large (2MP+) photos take a couple of seconds to load. Perhaps someday I will include native JPG loading codeDone
- CEPhotoViewer is built for ARM CPUs only. I can build for other CPUs but dont have a device handy
Looking forward to your comments. Im also working on finishing a MP3 player and a launcher (more appropriate for GPS devices)
Version history
- v0.67 (3/25/2008)
First public release- v0.68 (3/26/2008)
Integrated JPEG processing. Much faster in loading big images (although the size tripled from 20Kb to 60Kb)Added edge hot-spots to navigate in addition to slide gestures
Feature Request
What do you think of adding in touch Pan, Tilt, Zoom, & Rotate? Also, it would be cool if it auto rotated based on the original pictures orientation.
Thanks,
Curious G
i'll give this a shot when i get home
curious george said:
What do you think of adding in touch Pan, Tilt, Zoom, & Rotate? Also, it would be cool if it auto rotated based on the original pictures orientation.
Thanks,
Curious G
Click to expand...
Click to collapse
Forgot to mention, pictures are auto-rotated if they can fit better in the screen. Also auto-rotates if you change the display (like when I pull out the keyboard)
Nice but it wouldn't load my actual (2mp) photos. Sliding is a bit slow but very smooth. Wouldn't quit and at some point all corners stopped working.
Trekvogel said:
Nice but it wouldn't load my actual (2mp) photos. Sliding is a bit slow but very smooth. Wouldn't quit and at some point all corners stopped working.
Click to expand...
Click to collapse
Loading large images is time consuming, sorry, thats the way microsoft has implemented JPG processing. The corners are not 'not responding', the program is still trying to load the image.
Im trying to compile ijl jpg library that can loaded scaled images, that way I only decompress the size I want
3/26 - Version updated
Guess I'm in the minority who resizes images to fit in PDA screen. Due to popular demand, I have integrated the IJG jpeg library to considerably speed up loading of large images (largely due to internal image scaling)
Also added edge hotspots to navigate images, rather than slides which are bit cumbersome
my personal opinion(i havent seen program YET):
any viewer, that cannot show gif/animgif/png/tga/bmp files is pointless.
it doesn't matter how "touch"-ed it will be.
so - i am gonna update opinion after tests..
nothin said:
my personal opinion(i havent seen program YET):
any viewer, that cannot show gif/animgif/png/tga/bmp files is pointless.
it doesn't matter how "touch"-ed it will be.
so - i am gonna update opinion after tests..
Click to expand...
Click to collapse
It does show gif and bmp. Adding png is trivial (libpng can be compiled easily in CE, both PNG and TIF take about 100Kb each). My intent is to what cover 80% of the people would want.
Just tried it on my Trinity and, while the transition speed is nothing to write home about, the software works. Not sure if i prefer this or S2V, but it has to be said this is a nice application.
Edit
Could do with more space at the top when navigating folders, the directory path disappers under the "This Folder" button.
Please could we have screenshots?
iamwhoiam said:
Please could we have screenshots?
Click to expand...
Click to collapse
It shows your photo on the full screen, so screenshots are not of any use
deedee said:
Just tried it on my Trinity and, while the transition speed is nothing to write home about, the software works. Not sure if i prefer this or S2V, but it has to be said this is a nice application.
Edit
Could do with more space at the top when navigating folders, the directory path disappers under the "This Folder" button.
Click to expand...
Click to collapse
The main goal of writing this app was to have it working on all CE devices (including GPS that do not have the .NET framework installed).
Also, there are more transitions than just the slides that are visible when you are in slide-show mode
Amazing Program!!
I've just gotten myself a windows mobile phone. I looked everywhere for a simple photo viewer that could scroll through images by tapping on the left or right of the screen. I didnt understand why resco photoviewer or pqv or any of those other photo viewers didnt have this feature. It was so frustrating.
Also I wanted to browse folders starting at a pre-configured Picture folder. I didnt want the program to go scanning my whole PDA for pics including gifs and pngs for some other softwares.
Finally found this program and I'm really happy.
I wonder if you're still developing this program though? This thread doesnt seem to be active anymore. I hope you'll still continue developing this program.
If you're too busy, I'd be happy to help in some aspects of coding or improving the program. It really is that amazing to me.
Hope this program is still alive.
Lodd said:
I've just gotten myself a windows mobile phone. I looked everywhere for a simple photo viewer that could scroll through images by tapping on the left or right of the screen. I didnt understand why resco photoviewer or pqv or any of those other photo viewers didnt have this feature. It was so frustrating.
Also I wanted to browse folders starting at a pre-configured Picture folder. I didnt want the program to go scanning my whole PDA for pics including gifs and pngs for some other softwares.
Finally found this program and I'm really happy.
I wonder if you're still developing this program though? This thread doesnt seem to be active anymore. I hope you'll still continue developing this program.
If you're too busy, I'd be happy to help in some aspects of coding or improving the program. It really is that amazing to me.
Hope this program is still alive.
Click to expand...
Click to collapse
Glad to hear that this application is working well for you.
I have not stopped development on this, added additional features like PNG, GIF decoding and automatic rotation.
This being a PPC forum, there is not much need for this app since there are multiple options (including built-in applications). I had made this app and many others primarily for GPS and other low end devices without the standard libraries.
I will update this thread with the latest version and also add other applications I have built (including native MP3/OGG player, simple shell, GPS dashboard etc), all totally skinnable and configurable
The program has been amazing. Loads huge pictures with no problem. It's definitely faster than Vito's EyePhoto.
But Coolsva, I have a question. Now call me crazy, but I want to be able to set it up so that when I click a jpg file in file explorer or total commander, it will open up in your photoviewer instead of the windows mobile default viewer (coz it sucks). What're the parameters to do so? I tried the normal parameter "%1" but it doesn't seem to work.
I'm glad you're still working on this program.
Cool program , but zoom would be nice feature
coolsva said:
I will update this thread with the latest version and also add other applications I have built (including native MP3/OGG player, simple shell, GPS dashboard etc), all totally skinnable and configurable
Click to expand...
Click to collapse
Looks interesting, please do it !
Just now landed at this thread after spending a while checking out google results for "windows mobile picture viewer". Coolsva's prog sounds very worth trying, but I'm wondering if 0.68 is still the latest release?
HarpShot
________________________________
He had a photographic memory that was never developed.
Just saw this too, this could have real potential
I'm also searching for a simple photo viewer like Lodd mentioned
Added a quick fix file for users with 0.95 installed
-Fixes the huge weather icon
-All programs including subfolders show up under programs
-volume control under settings just controls flipslide sounds not pda volume.
-also an option in flipslidelaunch.ini to turn of sound always just add false to the bottom.
-Tasks are organized properly and tasks with no due date don't display 1/1/01
Just unzip FlipSlide_0.95_Fix.zip below and copy to your \program files\FlipSlide directory on your pda, also delete your flipslide.ini and flipslidelaunch.ini files in the home \ directory.
Enjoy.
The new version which is dedicated to speed and size is coming along nicely, I may be able to finish it this weekend. It is about 7 times smaller in size and should hopefully be atleast 5 times quicker for load time and runtime.
----------------------------------------------
FLIPSLIDE v0.95 RELEASED
New Enhancements Include:
-Increased speed
-Theme support in FlipSlideLaunch.ini
-QVGADefault theme created for QVGA users
IMPORTANT!!! - please delete the FlipSlideLaunch.ini file in your PDA base directory if you have ever installed this program, otherwise it will not take advantage of the speed boost.
It can be downloaded from SourceForge
It's in .cab format.
-------------------------------------------------------------------------
FLIPSLIDE v0.9 RELEASED
New Enhancements Include:
-Supports QVGA and VGA not square
-Default programs can be changed under settings
-.ini file to manually change settings
-Improvement on quick slide programs so you can flip sideways easier
It can be downloaded from SourceForge
It's in .cab format.
the video tab on your page doesnt work
same here the video tab on your page doesnt work
He doesn't have a video page right now. It's just a null link. Give it time. He'll get some up there eventually.
chetstriker said:
FlipSlide 0.8 Released and completely free with source code
Allows you to access most features of your pda with a slick sliding and flipping interface and finger sized buttons.
It Works with any 480x640 touch screen device running wm2003 or greater.
I'm using it with my axim x51v on wm6.
Let me know how you like it and what pda and OS your using it on.
Here is the home page
And here is the project on SourceForge
Source code is also available.
Click to expand...
Click to collapse
WOOOW this is a great program, i installed it on my kaiser/tytn II but its QVGA, are you willing to make a QVGA version to, because i really love this, if it was commercial i would pay for it. the vga version works on kaiser.
Thanks in advance for considering..
greetings
Marcel van Blankers
Is there any QVGA version??
It seems very great I want to try it out..
Works good on my Axim X51V using WM6.1 but can I customize it? Don't use Media Player for example.. Also on the first page it shows tasks but no appointments! Anyway it's a great thing, one of the best I've tested so far!
Just in time to get nominated for the awards!Of course,without a QVGA version.....
Thans for the feedback
About the calendar, The calendar button on the front page is your daily planner. It shows only appointments for the day, you can press the arrors above it to go forward and back days and pressing the center bar returns you to your current day. If any on the front page icons have a green bar under it then that means you have data in it.
For the QVGA option, I do plan on building one however it's a little difficult because i only have a vga pda and I want to design it differently for QVGA, this program was designed to not have to use a stylus and take advantage of the large display. I want to use a diffent touch interface for QVGA that better maximizes the space for it's specs. But yes, it's in my plans.
For the video link, i've have problems getting one uploaded because i can't find the software to retrieve it from my camera an they don't allow you to download it. And software recorders for the PDA always seem to make it look choppy which it i not. If anyone doesn't mind recording a short vid and put it on youtube or somewhere i can access it I would be very greatful.
About customization, My next release I plan to allow changes to default programs for media, contact, tasks, dialer and such. I also plan of making this skinable. I definately agree withyou, I also don't use media player as my default player.
Thank you very much for all your feedback. I will keep posting more, I usualy create new releases each week or two.
:>
Chet Striker
thank you very I will test it and give you feedback!
about the calendar again, it has a green bar but when I press it doesn't show any entry! the tasks icon works for me!
It looks nice. I will try it.
Curious G
This is only for the VGAversion????
Thanks...
Might bring some competition to PointUI in later builds!
Feedback
Hey TacoLoco, I was wondering if you could give me more info about your calendar problem, like do you have appointments in microsoft calendar for the day? and if so are your appointments a single occurance or weekly, monthly or yearly appointments that are in microsoft calendar but not in flipslide?
also i was wondering what PDA and OS your using.
Any further feedback would be very helpful.
Thanks
72% download only
HI, The download stops at 72%.. can you upload the file in this forum
thanks
The download finishes at 3.75MB plz seee pictures
good work
qvga version pleassee
Same problem here...
My Touch is QVGA...
QVGA project started
Ok, i'm starting the QVGA program today, It will probably be by this weekend or at latest by next before it's up. But It seems enough people are interested.
Since I don't actualy own a QVGA PDA, and virtualization runs unrealistically slow, I may need testing help from people along the way.
Chet Striker
chetstriker said:
Ok, i'm starting the QVGA program today, It will probably be by this weekend or at latest by next before it's up. But It seems enough people are interested.
Since I don't actualy own a QVGA PDA, and virtualization runs unrealistically slow, I may need testing help from people along the way.
Chet Striker
Click to expand...
Click to collapse
i'll be happy to test for you.
my device info:
HTC TyTn II
Rom: Dutty's 6.1 209=latest
radio: 1.58.16.27
Greetings from holland.
Marcel
chetstriker said:
Ok, i'm starting the QVGA program today, It will probably be by this weekend or at latest by next before it's up. But It seems enough people are interested.
Since I don't actualy own a QVGA PDA, and virtualization runs unrealistically slow, I may need testing help from people along the way.
Chet Striker
Click to expand...
Click to collapse
hi chetstriker I own Touch Cruise and don't mind if you allow me to test your QVGA FlipSlide once completed. Cheers !
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?
General info:
Samsung S3C6410 processor supports OpenGL ES 1.1 and 2.0, but for some reason Samsung didn't include any proper OpenGL ES 1.0 implementation on our devices.
This is the project of creating a libgles_cm.dll library which compensates this.
So, here is the release of the OpenGL ES 3D v1 (and HTC) compatibility layer for Samsung Omnia II, Pro (Qwerty) and Giorgio Armani 2 (and M900 and...):
Installation:
ZIP download (current version):
(original GinKage material) Download it by clicking on this link.
The zip contains libgles_cm.dll, put this in your \Windows folder for activation across the entire device, or in the same folder as the EXE of the program you want to try this with.
CAB download (version 0.26):
(some additions by Chainfire) Attached!
This CAB will place the libgles_cm.dll file in your \Windows folder (unsigned). This means it will be used by all (capable) programs. I have also included libgles_cl.dll (an adaption from NuShrike's CL), which may add some compatibility for some games, but is untested in combination with GinKage's CM library.
Note:Don't forget to switch your device to HIGH performance mode or plug a charge adapter otherwise you won't get any decent performance.
Compatibility:
What works:
Xtrakt
Experiment 13
HTC TouchFlo3D v1.3, v2.0, HTC Sense v2.5
Tower Defense
Flight Commander
10 Games for Betting
S2P 0.80
Opera Mobile 9.7
glBenchmark 1.0/1.1
TestOpenGL
HG Engine (Hologram App) and HG Proton [reported by daskalos]
Known issues:
glBenchmark hangs after 10-13 tests, don't know why. So, if you want to benchmark, do it in 3-4 runs, few tests at a time. Also, 'Flat' shading mode doesn't work, everything renders as 'Smooth'.
Xtrakt has some minor texturing issues (as you may see on fonts) due to the unsupported 1024x1024 texture resolution. Although it's perfectly playable.
Some alpha-blensing issues with Spb Mobile Shell 3.5.2 and earlier, NFS: Undercover, 10 Games for Betting and Call of Duty 2.
What does NOT work:
Spb Mobile Shell 3.5.2 and earlier. Although you may switch acceleration on by registry at [HKLM\Software\Spb Software House 2\Spb Mobile Shell\Gl\], setting GlEnabed to 1, but it is really unusable: you can't tap on a panel or a message to select it, you can only swipe to rotate carousel. I don't really care, because Spb already added GL2 support in the later releases.
NFS: Undercover. Almost worked for some time, but used to hang or crash randomly, and now it won't start at all. Again, I don't really care, as there is NFS in Samsung's AppStore.
Tons of GL apps.
Remember, I DON'T actually want to know about apps that DON'T work.
What I DO want to know about, is if anything else apart from
the list above work. That would really be a surprise!
Source code
The project is open-sourced. There are three main reasons for this:
I want the project to evolve, even when I don't have enough time for it.
I want to see more GL2 applications for Omnia 2 created by third-party developers (waiting for a Samsung's GL2 SDK is some pain).
I want Samsung to finally fix their own GL2 driver (and I hope that maybe this lib's sources will help).
So, I don't really think there's any other way to make these wishes possible.
Project source is available at SourceForge here: http://sourceforge.net/projects/omnia2gl/
To build the source code you'll need Visual Studio 2008, Windows Mobile 6 SDK and GL2_SDK.zip from the Files section of the SourceForge project.
At the moment, only me (GinKage) and Chainfire are the project admins, so if you have something to commit you'll need to contact us.
You may also find Screentex source there. Simple app it is, but it may be compiled in both GL1 and GL2 modes (some time earlier, it was also D3DM-compliant, not sure about it now).
I kindly ask you not to criticize the code too much, as I haven't even tried to make it look like industrial-standard.
It was created as a hobby, a brain siesta. If you want to prettify it, do it (and send us a patch, so it would find its way to SVN).
Also, if you use some parts of the code, please do mention us (GinKage, Chainfire, NuShrike) in credits. That's all I ask in return.
Bonus (for Samsung representatives if any):
A short list of some stupid bugs found in Samsung's driver during my work on this project:
eglGetDisplay(0) fails. It should work with a zero argument, by standard, but it fails.
Calling glGetString() before eglInitialize(), crashes.
eglGetConfigs with config_size = 4096 crashes.
glBindBuffer generates GL_OUT_OF_MEMORY if buffer number is above 100 (it is an actual limit hard-wired into libGLESv2, I had to re-implement the whole buffer management by myself). And, Xtrakt needs 102 buffers...
glGetIntegerv(GL_MAX_TEXTURE_UNITS) returns 0 instead of 2. This one totally breaks NFS.
glGetIntegerv(GL_MAX_TEXTURE_SIZE) returns 2048. In reality, every texture larger than 512x512 is going to be ignored at all, with some allocaton errors in debugger output. It may be used with S3TC, but it's DXT1 only, not even DXT5. And, somehow, with a GL_RGBA_S3TC_OES format, an alpha bit is ignored at all.
And don't forget to create mipmaps, or GL_*_MIPMAP_* won't draw anything at all (it should just use the only level available)!
glAlphaFuncEXP is not iplemented in libGLESv2 (though the hardware DOES have this available), had to do a hack for this to work.
glViewport works wrong after all. If the parameters, e.g. X and Width have a larger sum than the width of the window surface, then the resulting width is clamped, which results in scaled down rendering.
eglCreateWindowSurface is a fail: it doesn't track window size change at all, so if you create a surface and change window size, your output will be of an inadequate size (e.g., in Opera 9.7 going from Widowed mode to Fullscreen, or in anything else when going from Landscape to Portrait mode).
eglSwapBuffers is slow as hell (probably because of plain BitBlt it uses), it takes about 10 ms, which limits fps to about 100 and reduces the speed of everything else (e.g., you'll get 16 fps where you could have 20, only because of this functon).
All textures have an offset by half-texel. This is probably done for mapping to the nearest texel (like, round(u + 0.5)), but it breaks everything that is drawn, for example, with glOrtho (like Opera 9.7). Well, not exactly breaks, but everything look "smoothed out".
Release history:
Version 0.2, pre-alpha (Sep 24, 2009)
Initial release (proof-of-concept)
Version 0.25 (Nov 2, 2009)
One of the nicest updates. Faster, smaller, better. That is:
It does QTC texture decompression more quickly, so Xtrakt loads a tad faster, and lags in TF3D were reduced (though haven't gone completely).
It has a smaller footprint, so Acer M900 users should be able to run Xtrakt now.
It allows to run an original unmodified TouchFLO 3D 1.3 (fixes yet another Samsung's bug, this time in glViewport). Maybe it can do even more, but that was not tested.
CFC 0.60 fully supported.
Though, if you want TF3D 1.3, I strongly advise you to use Chainfire's package with recompressed textures, as they have better quality, the package itself is significantly smaller and it runs much faster.
Version 0.256 (Nov 14, 2009)
A minor yet highly recommended update!
Introduced a minus half-texel offset for every texture coordinate that libgles renders (yet another Samsung's bug).
The difference, now, is huge. First thing you'll probably notice, is a perfect (pixel-wise) Opera 9.7 rendering.
Second, some of the irritating lines in Xtrakt are gone as well.
Third, Tower Defense gets a tiny bit more clear and sharp look.
Version 0.257 (Nov 20, 2009)
Following games are now supported:
Flight Commander
Experiment 13
Version 0.258 (Nov 29, 2009)
Yet another minor update:
adds PVRTC support (not sure if it gives anything useful, but let it be: maybe some game for Dell Axim will finally work, maybe not);
fixes minor ambient lighting issue (as seen in TestOpenGL's donut test;
removes matrix palette from extensions list (so that glBenchmark 1.1 wouldn't hang);
and fixes a crash on MindPol's Coin game from their 10 Games for Betting.
I'd say, the latter game is the only reason why anyone would want to update.
Congratulations to MindPol on getting Bronze medal in App Contest with this one!
Version 0.26 (Feb 23, 2010)
Back to the two-digit version numbers!
S2P 0.80 crash fixed;
HTC Sense 2.5 texturing and crashes fixed.
hi, is this compatible with the omnia pro b7610?
So, here is the release of the OpenGL ES 3D v1 (and HTC) compatibility layer for Samsung Omnia II, Pro (Qwerty) and Giorgio Armani 2 (and M900 and...):
Click to expand...
Click to collapse
Sure, as you can see.
Nice work !
Will you GinKage continue this project ? or 0.26 is the last version ?
ginkae please fix HTC Sense v2.5 landscape mode
Here's what I have observed after I installed the OpenGl 1.0 in my M900.
1) xtrakt and testOpenGL works fine with the current drivers.
2) When .net compact framework 3.5 is installed both applications crashed.
3) After unistalling .NET compact framework 3.5 still both xtrakt and testOpenGL crashes. Thus leaving me no choice but to hard reset the phone and re-install the drivers.
I am not sure what i am doing wrong but i wanted to know if there are known issues running both .NET framework and the openGL drivers in M900.
BTW, i am using daskalos custom lite ROM
THanks.
Can't say anything about M900, as I neither have one neither do I have any friends who has it.
And, as for Sense 2.5, I'll wait a bit, as I don't want to reflash right now, because I've finally found a good and stable firmware, and tweaked it all the way through. I'll wait for an official 6.5.3 ROM: someone says it may also have issues with Opera 9.7, so I'll have to dig through those sources once again anyway.
So, 0.26 is probably not the last version. Although I'm just not sure what else can I squeeze out of this project apart from fixing some annoying bugs.
App name: rumen's Guitar
License: Freeware
System requirements:
OS: WM5 and higher, CF3.5
Hello everyone,
recently I've been searching for a working guitar aplication for WM6 and full touchscreen (like HD2) but I didn't find anythig useful.
So I decide to wrote one by myself. This app is far away from perfect, but I'm new in developing and I will improve it in the future.
I will upload and some videos soon.
For future implementations :
- load text files in that empty text box - for song and lyrics that you can see them during playing;
- increase the quality of sound - it is very poor now;
- multitouch - if it is possible;
- improve speed of playing;
- to put some strings ;
- distosion ......
There is a lot of things that can be done. This is just a start point.
See you soon.
Rumen.
Newer version available: v1.1
New feautures:
1. Strings and some graphic.
2. Text box for lyric and chords with buttons for movement.
3. Load, edit and save txt files.
Newer version available: v1.2
New feautures:
1. Added exit function - File ->Exit
2. Workable link in help menu.
Thanks!!!
Nice app and great job, Rumen! WM 6.x really misses guitar-simulation apps. The only one I've known so far is Iperov's guitar. So, big thanks for you work!
I've been working on guitar app too. Hope to publish it on XDA-developers soon.
As for the version 1.1 of you app:
It would be great if an app didn't stay in memory when it is closed by pressing cross button.
SergeyP_2000 said:
As for the version 1.1 of you app:
It would be great if an app didn't stay in memory when it is closed by pressing cross button.
Click to expand...
Click to collapse
Well, actually this is a WM function - programs are not closed when you press
X button, there are just minimized and stays in memory.
However, I will add an exit function this night
just download it and looking forward to give it a try... 1000 appreciation to rumen...
excellent
Thanks big for the excellent program!
This best that is today. I like a sound and speed of its work.
If you have a possibility to make little changes it would be ingenious!
1. To choose skin for the program (without a text field).
2. Work in the full screen.
3. A sound stop through long pressing strings.
4. Record, listen and save the played melodies. Background playing.
5. Sound change (acoustics, electric, rock, metal).
I will be glad to see your new work.
skin
I offer such skin
love your work... u make my life full of joy....... 1000 appreciations
Thank you for appreciations. Glad that you like this app.
I know that there are a lot of things that can be done.
Will try some of the prepositon soon.
Unfortunally, the time is awlays against us.
QVGA got scrollbars, but works ok.
Olleg1 made good proposals.
Lyrics textbox useless, if you hold PDA as guitar.
Also, "iperov's Pocket Guitar" has open sources which may (or may not) be helpful
editor of chords
Hi, rumen80. With impatience I wait for new versions of your program.
One more offer: add please the editor of chords, with possible preservation in base.
Hands are scratched for test a new skin with the big buttons of chords .
rumen's Guitar to give me pleasures from night game.
That's great.. waited for ages.. SUPPORTING
will be great with distort and much better graphics
/supporting