Windows Phone Thoughts - Daily News, Views, Rants and Raves

Check out the hottest Windows Mobile devices at our Expansys store!


Digital Home Thoughts

Loading feed...

Laptop Thoughts

Loading feed...

Android Thoughts

Loading feed...




Go Back   Thoughts Media Forums > WINDOWS PHONE THOUGHTS > Windows Phone Software

Reply
 
Thread Tools Display Modes
  #1  
Old 08-19-2005, 12:14 PM
Menneisyys
5000+ Posts? I Should OWN This Site!
Join Date: Jun 2007
Posts: 5,067
Default Everything you wanted to know about Today backgrounds / themes

You can run into Today skin/Theme-related questions all the time on Pocket PC boards; this is why I’ve decided to write a complete tutorial (with a fully-fledged roundup of the available programmatical solutions) on the question. Hope it’ll answer all your questions. Feel free to ask if you don’t understand something.

First and foremost, some words on how the operating system works. This will be essential to understand the rest of my article.

The Windows Mobile operating system gets its Today and Start Menu background images from \Windows\tdywater.gif and \Windows\stwater.gif, respectively, except if the registry value HKEY_CURRENT_USER\Software\Microsoft\Today\UseStartImage is existing and set to a non-null value. Then, it will only use \Windows\stwater.gif (that is, the start menu image) and just ignores \Windows\tdywater.gif for generating the Today image. (This is very useful to know because for example ThemeMakerTosh crops the start menu image to a very small size (150*293). This is why the Today screen will be a tiled version of this image, instead of the ‘real’ Today image. With other theme generators, this is not that big a problem.)

(Incidentally, what’s ‘st’, what’s ‘tdy’, and why ‘water’, you may ask. What does the Today background has to do with ‘water’? Nothing, really; ‘water’ comes from ‘watermark’. You may also have guessed that ‘st’ stands for Start Menu and, you – like me – MS-DOS oldtimers, ‘tdy’ stands for, no, not Tandy 1000-compliant stuff, but ‘Today’. You’ll certainly laugh at me: at first, when I saw a filename starting with ‘tdy’ in the file system, I asked myself ‘WTF the Pocket PC has to do with old Tandy PCjr compatibles?!’ ).

If you just copy an image in \Windows\stwater.gif (and, UseStartImage is enabled as is by default), then, the Windows Mobile operating system will do the following:

- if the image is bigger than the available screen estate (let it be QVGA Portrait, QVGA Landscape or the same with VGA, in both SE and native mode), it just crops the image and only displays what is displayable from the upper left corner. That is, it doesn’t resize the image to fit in the available screen estate.
- If it’s smaller than the available screen estate, it tiles the image, by effectively displaying the image several times on your PDA. A well-known analogy is how Web browsers tile the Web page background images over the entire web page.

What does this result in? It’s pretty simple.

1, to avoid tiling, you should use stwater.gif images (from now on, I only assume there’s only one image in \Windows and both the Start Menu and the Today background uses the same; please see my explanation of “UseStartImage” on this right at the beginning) that are bigger (or equal to the size) than the available screen estate. In the case of SE VGA Portrait, this means they are (at least) 480*536 (width / heigth); and, in SE VGA Landscape, this means they are (at least) 640*376. As the same image is (or, at least, can be – see the explanation on stwater_640_480.gif and stwater_480_640.gif later!) used in both orientation modes, this all means in the default SE mode, you’ll need to use images of size 640*536. (Divide all these values by two to get the QVGA WM2003SE values!).



In this screenshot, you can clearly see that if you use a Today image that only has the width of 480 pixels, it will be tiled in the Landscape mode. This is why the image needs to have the width 640.

Please note that the Portrait height 536 only refers to SE VGA and not native VGA. What does it mean in native mode? You’ve guessed right: as the upper/lower bars are half the size in native VGA than in SE (2*26 pixels as opposed to 2*52), you’ll need to increase the heigth of the image to 588 in order to avoid the tiling effect in Portrait mode. Using images of (at least) this height, no tiling will happen in Portrait:



I’ve only spoken of the screen estate without the drop-down Start menu so far. As you may know, the lowest area of the Start menu, if all the history and program slots are filled, may extend in the bottom bar of the Today screen, which means you will see a tiling effect in this area if you stick to the above-mentioned 536 (SE) VGA height. An example in SE VGA, with a Today image that has the height 536:



As can clearly be seen, the exceeding Start menu area is tiled. This means you shouldn’t use the height 536 in SE; it’s the best to stick to the height 588 in general, which is also native VGA compliant. Note that you won’t need taller images than 588 pixels because in native VGA mode the Start menu never exceeds into the lower bar.

(Note that the image I’ve used all in my tests have been generated by me. This image is good in the following respects:

- it clearly shows brute-force (that is, ones that don’t use any antialiasing – for example, Pocket Internet Explorer with images that are wider than half the horizontal screen estate) stretching/downsampling effects: then, lines will either disappear or appear with double thickness, which can very easily be seen
- it also shows tiling effects because it prints coordinates every 20 pixels
- it shows the effective resolution (is the Today background displayed with pixel doubling)

You can download the image generator app from here; the C# source, as usual with all my PPC/Java apps, are also available. Just make it generate the image and save to a file of your own. I’ve pre-generated some images for your convenience with some sizes used and referred to in this article.)

2, you shouldn’t copy much bigger images to \Windows than the available screen estate either because it’s a, a waste of RAM; b, you won’t ever see the regions outside the crop region as the Windows Mobile operating system doesn’t do any runtime resizing / content fitting, except for tiling with small(er) images.

This, so far, may have seemed pretty easy. However, life is not as easy as you would think, mostly because of the several configuration options (you’ve guessed) VGA brings into the picture, specifically the two different DPI settings in the default SE and the native VGA mode. What does this mean? (Skip this section if you don’t want to know how VGA devices use Today background information.)

If you have a large, fully VGA-compliant (640*588) image, then, you will need to explicitly set another registry key, HKEY_CURRENT_USER\Software\ Microsoft\Today\DPI , to the decimal value 192 in SE. (As its default value is 96, in native VGA mode, it doesn’t need to be set). Otherwise, the system will consider it to be the default 96, which will result in the pixel-doubled view of the upper left quarter of the image. It’s really worth knowing as some means of setting themes/background like to mess up/delete this value. Then, even if you have a high-resolution image in \Windows\stwater.gif, you will only see the upper left quarter of it.

Also note that \Windows\stwater.gif is a generic file. In SE, if you still prefer using different images for the landscape/portrait mode, you should use the filenames stwater_640_480.gif (the default file name for the landscape mode) and stwater_480_640.gif (the default file name for the portrait mode). Of the apps, only the (in some devices) built-in Pictures creates files with this name convention; other tools don’t. Please note that in the rest of the article I always refer to stwater.gif; if you choose to ‘break up’ its functionality for the two orientation modes, you’ll need to use the filenames stwater_640_480.gif and stwater_480_640.gif so that the operating system finds them.

Please note that there is also another value in the Registry, HKEY_CURRENT_USER\Software\Microsoft\Today\WatermarkDPI , which only has effect on how the Today screen is rendered if its value is 192 (the default for most apps that do set it) and HKEY_CURRENT_USER\Software\Microsoft\Today\DPI isn’t set. Then, it’ll tile a VGA stwater.gif image four times on the Today screen. It won’t have any other effects: neither in SE nor in other native VGA modes. That is, you may safely delete this registry value, it won’t cause any problems.

Here’s a matrix of the WatermarkDPI/DPI relationship in both SE (192 dpi) and native VGA (96 dpi), with a VGA-sized image. As can clearly be seen, in SE, the lack of HKEY_CURRENT_USER\Software\Microsoft\Today\DPI (having the value 192) will result in problems. In native VGA mode, however, this registry value may even be missing (except when WatermarkDPI is defined and is 192 at the same time).

The table: sorry, can’t include it in here because of the forum engine restrictions. See “DPI / WatermarkDPI relationship” here.

Incidentally, you may have wondered what the QVGA/VGA radio buttons in SE_VGA (or in ozVGA) do. They change the value of HKEY_CURRENT_USER\Software\Microsoft\Today\DPI . The matrix of these changes:

(sorry, can’t include it in here because of the forum engine restrictions. See “VGA/QVGA Today image and VGA mode relationship” here.)


What these all mean? It’s pretty simple. If you only have a QVGA-size (more properly, 320*294, which is half of the well-known 640*588 VGA-compliant size) stwater.gif, then, you may want to instruct the Pocket PC to do pixel doubling while displaying it. Then, if you are in SE, you need to define HKEY_CURRENT_USER\Software\Microsoft\Today\DPI with the value of 96; and, in native VGA mode, you also need to define HKEY_CURRENT_USER\Software\Microsoft\Today\DPI with the value of 48. With VGA- and landscape-compliant (640*588) stwater.gif, the DPI values to be used in SE and native VGA modes are 192 and 96, respectively, as has already been pointed out.

There’re some other values in HKEY_CURRENT_USER\Software\Microsoft\Today\ . Knowing them is not as important and problems based on their misconfiguration are not common as the registry values discussed above; therefore, I’ll only introduce them when it is definitely needed.

You’ll need to reset your device between manually changing stwater.gif/modifying the Today screen-related registry… or?

Yes, basically, if you don’t do any advanced ‘hacking’, you will end up resetting your device all the time between changes. There is, however, a very smart way of avoiding this. Just execute my very simple app and the Today screen will be immediately updated. (As usual, the sources are also available.) (For people interested in coding: I’ve used the information in this article when developing the app).

Beware of the “Use this picture as the background” of the built-in Settings/ Today applet!

You may want to ask an important question: Why fuss with all this manual stwater.gif file copying and device resetting / Today refresh forcing when we already have the built-in means to do so (namely, “Use this picture as the background” in the Settings/ Today applet)? Yes, you’re right – that’s a good question.

First, this applet only uses a Today image; that is, it won’t put the image in the Start menu background. Second, it’s pretty incompatible with other (easier) solutions in that it it uses a custom file (as is, however, suggested in this, pretty old, PPC2k2-related article), \Windows\tdycust.gif, to copy the image (instead of stwater.gif) to, and it, therefore, also modifies HKEY_CURRENT_USER\Software\Microsoft\Today\WallFile and HKEY_CURRENT_USER\Software\Microsoft\Today\Watermark, giving them the value “\windows\tdycust.gif” and “tdycust.gif”, respectively, so that the operating system knows in what file to look for the Today background image. This is why you need to manually remove these registry entries if you want to install a .tsk file over a Today background image set by the Today applet, because you won’t be able to do this unless you explicitly remove these registry values. Always keep this in mind after you try to install a TSK file after having installed any image file with the Today applet.

Basically, all the Today theme generator/setter apps are based on the same logics

Why did I need to speak of all this? Because, as you will see, Today background setter/ Theme creator apps all use the same methology:

1, Pocket PC apps that set the Today background directly, just copy (after some possible resizing – see for example Pictures) the image file you pass them to the now well-known \Windows\stwater.gif.
2, Theme creator apps do almost the same: they put a stwater.gif (and a tdywater.gif) in a .tsk file (which is almost the same as .cab files), along with some system colour information. It’s this .tsk file that you, once transferred to the PDA, import in the Settings/Today applet.

Importing a .tsk file in Settings/Today applet doesn’t do anything fancy: it just extracts the two (Start Menu and Today) background images from the .tsk file and copies them into \Windows, overwriting the old files (if there were any of them). It also extracts the new system color scheme from the .tsk file and loads it in the Registry. Finally, it forces the Today screen to be updated (which you must do by hand, for example by directly executing my above-introduced Today refresher app, if you do the copying of image files to \Windows by hand, without using any external tools).

What’s the point in having .tsk files, then? Because

1, they are much easier for non-Pocket PC-geeks to import – task files, essentially, only need to be clicked on in the Settings/Today applet and nothing needs to be done – you won’t need to force a Today screen refresh, you won’t need to redefine system colors by hand etc.
2, if you define a new color scheme along with your images (set the Today/Start Menu text color and make sure the Today upper/lower bars have the same color as, say, the background/most widely used color of your image), it will be applied at once.

If you, however, prefer importing/copying over your image files by hand (without using .tsk files), you will need to change the system colors yourself – either by importing a pre-defined registry import file that contains them, or, starting an app like CETuner 2005. This app is capable of setting all system colors, except for (of them, the lack of the Start Menu font color setting is a very annoyimg omission!), as of version 2.56, the Start Menu text, the FileList Line A/B left/right and the Selection dot color.

The other widely known registry tweaker app with (some) system appearance tweaking capabilities, Tweaks2k2.NET (the current, tested version is 3.10.0.0), on the other hand, is capable of setting both the Start Menu text and the Selection dot colors, in addition to the Today screen font/line and the top bar colors. Its other color/font setting capabilities, however, are certainly much more limited than those of CETuner 2005, at least as of the current version.

You may want to check out this direct comparison of the two apps, color setting-wise (read the explanation for the tets cases below). As you can see, they are capable of a lot of color setting capabilities that are completely missing from current theme creator applications (not to speak of, in this respect, ‘simple’ apps – MultiIE, Pocket Artist etc. – that only overwrite stwater.gif).

So, as has been explained, using .tsk files can be much easier. Fortunately, as you’ll see, you can easily create or even ‘hack’ (that is, just swap the images inside the tsk file to other images) tsk files.

Speaking of .tsk files, I also need to speak of a common misconception. Many think that tsk files can only be put in \Windows or \My Documents to be accessed (and, incidentally, even top-notch, brand new software packages like Spb Pocket Plus 3.0 put some 1495 kbytes of TSK files (on VGA devices) into \Windows). That’s not true –
.tsk files can be anywhere – in either the root of the storage card (if it contains an ignore_my_docs file in the root) or in \My Documents of the storage card (but not in any subdirectory!).

Please also note that you don’t need to keep the .tsk file after you’ve set it as default. The WM operating system, as has already been explained, just extracts the two image files inside it and copies them over to \Windows, and also gets the new color information stored in the tsk file, followed by importing it into the registry.

Converting / downsampling / resizing images

As has already been explained, the Windows Mobile operating system doesn’t do any image conversion by default at runtime, while displaying the Today background (think of the runtime CPU/memory implications of this! It would need to do the same every time the Today screen is brought into the foreground!). Therefore, you may want to convert your images to the right size before copying them in your \Windows directory or putting it into a TSK file. This is much more important than you think because all the free theme creator packages are only able to convert to either QVGA or VGA-sized, portrait-only images. If their output has VGA resolution at all, it’ll still have the width of 480, which will be tiled in Landscape. So, the output of all packages (except for the VGA/Landscape-compliant ThemeMaker McDeb and the Spb Extended Theme Generator, which, on the other hand, requires properly sized input files because it only swaps files inside tsk files created by the MS Theme Generator in the previous step) must be manually edited and the two image files swapped to VGA and/or Landscape-compliant ones.

To resize your images to 320*294 or 640*588 (QVGA or VGA, Landscape-compliant images) right on your PDA (and not on your PC), you may want to use, for example, XnView (if your input file is not bigger than 2-3 Mpixels) on the PDA. There’re other alternatives to XnView, but most of them are commercial. You may want to read my image viewer/editor roundup on these options.

If you (as you should!) prefer doing image resizing/downsampling/cropping on the PC, you have several options. As far as non-commercial (free) tools are concerned, PictureTray is a decent resizing (but not cropping!) tool. If you also want to do some cropping, especially in batch mode, I recommend ImageMagick. For example, mass (batch) cropping is very easy with the following command:

FOR /R %%X IN (*.jpg) DO "<path to ImageMagick>\convert.exe" -crop 640x588+0+0 "%%X" "%%X"

and, resizing with this:

FOR /R %%X IN (*.jpg) DO "<path to ImageMagick>\convert.exe" -resize 640x588 -quality 50 "%%X" "%%X"

The former will only retain the upper left part of all JPG images, while the latter will resize all the images in the current directory and all the subdirectories, overwriting the original files (so, save them to another directory before issuing the above commands!).

And now for something completely different… yes, the apps at last

Theme generator apps (with TSK output)

ThemeMakerTosh; also see this e800 thread.

This free app is able to convert images, but, if you choose VGA (e800 in this case), the output will be portrait only (the image size is 480*588). It’s also capable of creating QVGA Portrait TSK files (again, no landscape in this mode either). However, it can be of help because 1, it’s free 2, if you swap the images after the TSK file creation, then, its strengths (good color setting capabilities (especially compared to the non-existing color capabilities of the Spb app) and being free) can be utilized.

Microsoft Theme Generator

The most widely known, free, but pretty incapable and for ages not updated Theme generator. Doesn’t let the user set 2003-related colors (for example, the Start menu text color). Its built-in image converter is QVGA Portrait only.

Spb Extended Theme Generator

An add-on for the Microsoft Theme Generator. Doesn’t add much to its capabilities (doesn’t even let the user define WM2003-specific color schemes). There is no free lunch…

All it does is swapping the stwater/tdywater.gif images in the TSK file previously generated by Microsoft Theme Generator. It does not convert the images; therefore, the images you pass to it should already be properly resized and cropped. It has absolutely no color setting capabilities either, as opposed to both ThemeMakerTosh and FunnySnake's TKCreater, the other two GUI-based, free TSK generators.

FunnySnake's TKCreater

A free, PDA-based utility with basic capabilities. Supports WM2003 color settings. Not VGA-compatible either.

ThemeBuilder 2003

If you aren’t afraid of manual resizing/cropping of images (which you will otherwise end up doing if you use any task creator tool except for ThemeMaker McDeb) and setting colors in textual config files, this free utility is for you. As you have access to all the settable attributes (colors) in the system, you can do anything with this suite at the expense of user-unfriendlyness. You may also want to read this article on the app.

Avanquest (BVRP) Software’s pocket Theme Manager 2

A GUI-based all-in-one editor. Supports animation. A bit (?) overpriced, if you also take into account that the built-in image converter code it’s not VGA (not even SE!) compliant and, with the free Animated Theme Injector, you can also include Flash movies in your TSK files. Verdict: it’s too pricey if you take into account that you’ll end up hacking the TSK files it generates. ThemeMaker McDeb is a much better buy in this respect (too).

It also has a task file changer module runninng on the PDA. If you, however, aren’t keen on automatic task file changing, you may not need this feature.

ThemeMaker McDeb

At last a desktop-based utility that has an image cropper/converter/resizer engine that is both SE and VGA compliant. It is easy to use and also lets you set any system color, including the most-important Start menu text color and the Today text color. This is the Theme generator program to get if you don’t want to convert/crop your images by using external tools.

Today screen background setters

Conduits Pocket Artist 3.0, Resco Image Viewer 5.32 and MultiIE are programs that are also able to set the Today background directly. However, they only copy the given image file to \Windows\stwater.gif – no resizing/cropping/system color change will take place.

Fujitsu-Siemens Album is a bit better in this respect, but still far worse than manual TSK creation (with, say, ThemeBuilder 2003), ThemeMaker McDeb or even the hopefully built-in Pictures, mostly because it generates images of size 480*480. Therefore, it’s unable to fill in the entire screen area and tiles in Landscape, as can clearly be seen in the following two screenshots:





Tools/Set as Today Wallpaper… in WM2003+ Pictures

Some (not all!) WM2003+ devices like the iPAQ 2210 or the Pocket Loox 720 have the excellent Pictures application in ROM. It’s much better than the above-mentioned Today screen background setter tools because it not just dumbly copies the image file to \Windows\stwater.gif – it resizes them beforehand. If it’s smaller than the available screen estate, it puts a white border around it (that is, it doesn’t stretch it, but it also results in the Pocket PC’s not tiling it) and it also allows for setting the transparency level (other, simple tools don’t). It, however, doesn’t let for setting system colors – you will need to use, for example, direct registry tweaking or tweaks2k2.NET for that.

Please note that, instead of the standard \Windows\stwater.gif, this app creates stwater_640_480.gif and stwater_480_640.gif files, as described above.

The summarization table: sorry, can’t include it in here because of the forum engine restrictions. See “Summarization table” here.

Please note that I’ve listed font (re)definition capabilities (along with all the system color definition capabilities) mostly because I’ve also referred to CETuner and Tweaks2k2.NET in the article, which you will most probably need if you plan to use ‘plain’ today background setting without TSK files. You can read more on how WM2003 and WM2003SE store and use font size information.

Bottom line

If you want to create VGA and/or SE-(landscape) compliant themes and don’t want to manually convert files, go for ThemeMaker McDeb, it’s definitely the best tool in this respect. Forget pocket Theme Manager 2 because it’s not landscape/VGA-compliant!

Unfortunately, I would have expected the Spb app to be much more powerful. It doesn’t offer almost anything – you can do the same with simple image file overwriting in the TSK files as far as its pure TSK generation capabilities (not its Spb Pocket Plus skinning support!) are concerned.

If you don’t plan to pay for ThemeMaker McDeb, but don’t want to convert/crop your images by hand either, and are lucky enough to have Pictures on your PDA shipped in ROM, you’ll find it sufficient for most purposes (as long as you’re ready to set system colors manually), as far as casual (!) Today screen skin setting is concerned.

And, don’t forget: you can create VGA and/or landscape-compliant TSK files even without purchasing ThemeMaker McDeb, if you’re ready to do some manual image conversion, as outlined above. This may be a much better choice if you only plan to make few TSK files.

Please note that you can also download the files generated by these tools and you may also browse some other screenshots here. I haven’t directly linked the latter images in my article because they would have given little more information. Their names are decypherable; P stands for Portrait, L for Landscape, SE for SE VGA, N for native VGA.
 
Reply With Quote
  #2  
Old 08-19-2005, 05:14 PM
DaViD_BRaNDoN
Intellectual
DaViD_BRaNDoN's Avatar
Join Date: Nov 2002
Posts: 161

Nice detailed article! Thanks for sharing
__________________
David's Geeky Thoughts
If I can't teach you by my examples, learn from my mistakes
 
Reply With Quote
  #3  
Old 08-19-2005, 05:57 PM
i_spock
Ponderer
Join Date: Oct 2003
Posts: 103

Whoa! 8O Another great article by Menneisyys!! Thanks!
 
Reply With Quote
  #4  
Old 06-30-2006, 09:56 PM
Rufus317
Pupil
Join Date: Jun 2006
Posts: 11
Send a message via AIM to Rufus317 Send a message via MSN to Rufus317 Send a message via Yahoo to Rufus317
Default Not getting it

I guss my main question is. 8 was using theme generator v 2.0 and out of nowhere the error on all themes was that 'tdywater.gif' and'stwater.gif' were not copied correctly. what could cause this reistalling didn't work. I am about to reformat my drive. Is there a fix?
 
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 06:13 PM.