Wednesday, 19 of June of 2013

Tag » Tablets

EZGUI 5.0, the solution to bloatware !

With the advent of Windows 8, developers are likely looking for ways to be able to develop software which a small footprint for the desktop. EZGUI 5.0 Professional offers an amazing amount of power, but with likely one of the smallest footprints around.

The beauty of EZGUI is that it is a runtime GUI engine. The engine does most of the work, so your compiled EXE’s (using PowerBasic) are tiny in comparison to most applications. The runtime can be shared among multiple EXE’s as well, so you only need the runtime once and you can have as many EXE’s as you want to share it.

Now some may wonder, is EZGUI’s runtime a large GUI framework ?

EZGUI was written using PowerBasic and its runtime is amazingly small for the feature set it provides.  The core runtime DLL is only 700 KB in size, but even if you use the secondary runtimes (OpenGL control is separate), the total still only comes to about 1 megabyte in size.

Here are just the new features in EZGUI 5.0:

  • OpenGL 3D Animation (3D scripting language)
  • AutoResize Engine (Resize Controls based on rules)
  • Superclass Engine (Build new controls)
  • Custom Control Engine (Build new controls)
  • Component Engine (Build highlevel Components)
  • Canvas Effects (Draw on Canvas using Effects)
  • Image Filters (Draw Bitmaps using Image Filters)
  • Image Rotation (Draw Bitmaps and Rotate 360 degrees)
  • Theme Aware Drawing (Draw using Themed Objects)
  • Copy Windows (Copy Window content to Bitmap)
  • Faster Sprite Access (Access Sprites using Fast Indexes)
  • Hot Mouse Tracking (Proprietary Mouse Hot Tracking)
  • Private Timers (Private Timing Event for controls)
  • Multiple Monitor Support (Work with entire Virtual Desktop)
  • AlphaBlend Drawing (Draw Bitmaps using Alphablending)
  • Advanced DIB Support (more features for working with DIB’s)
  • Animate Windows (Show/Hide Windows with Effects like Slide)
  • Faster Code Syntaxes (ie. New “{ME}” syntax for Forms)
  • New GLCanvas Control (Everything Canvas can do plus 3D)
  • New Toolbarstrip Control (Variant of Toolbar with new features)
  • 11 Custom Controls as Source Code (Using Custom Control Engine)
  • 2 Components (Built using Component Engine)
  • Visual Bookmarks (Visual Designer Feature)
  • More Code Generation Options (Visual Designer Feature)
  • Theme Support (Visual Designer Feature)
  • Alignment Plugins (Visual Designer Feature)

EZGUI 5.0 also has all the features of the previous version such as:

  • Custom controls such as Canvas, Files Listbox, Properties Listbox, Masked edit, Turtle Graphics control
  • Drag and Drop engine. Build your own WYSIWYG style apps
  • subclass engine
  • graphics engine (draw to Canvas, DC’s or Printer
  • 3D buttons
  • OwnerDraw engine
  • CustomDraw engine
  • Threading engine
  • Tray Icon support

EZGUI is a good solution for building desktop applications for Windows 8 tablets with limited disk space. EZGUI also uses system resources very efficiently. Yes, EZGUI  lets you build quality applications without all the bloat.

 


Comments Off

Windows 8 and the so called modern UI

Ok, I do like a number of things about Windows 8 and the new modern UI (aka. metro). I like how easy it is to download apps and install them.  The UI elements (controls) appear to be well suited to touch as well. I understand the benefits of it being a sandbox (security) and I would not be surprised to find that it to be quite successful with Windows RT tablets. Compared to Android I find it simpler and easier to navigate (on a tablet).

That said, I have not been all that impressed with the quality of the apps. I have Windows 8 installed on an ExoPC which is one of the few lower cost Windows 7 tablets which is well suited to Windows 8. It has a screen resolution of 1366 x 768, which supports the snap feature.

Yet I keep finding the apps to be a bit one dimensional. The games tend to be the best, since they are purely graphic (DirectX), but the general apps are actually more limited in the UI design.

The problem with software user interface design over the years has been that Microsoft has pushed its own UI design philosophy, rather than encourage developers to be creative. For example, for years so called “good UI design” was making all software look and act the same. The idea was that users would find it easier to use new software because it all worked similarly.  If Microsoft used the Ribbon in their apps then programmers felt they needed to use Ribbons too. Personally I don’t find the ribbon to be any more effective that a simple set of toolbars. Starting with Windows XP, Windows provided themes and even API for using those themes when writing custom controls. Now with Windows 8, the nice 3D themes we have become accustomed to are considered old fashioned and in poor taste. Now Metro (Modern UI) is suppose to be better with its overly flat looking UI. You can’t even tell the difference between a Button control and a Label control in Metro.

What some developers may not appreciate about Windows is that since Windows 95/98 we have already had all the basic core UI elements one really needs, but with one beautiful no often used feature. What is that ?

Windows 8 and its modern UI still has buttons, listboxes, drop down lists (comboboxes), labels, etc. They just look a little different (flat), but basically the same thing. What the Windows API (WIN32) has offered from the beginning for many of these controls is what really is powerful. Windows provides two main methods for customizing many of these controls, refered to as OwnerDraw and CustomDraw. You can take a button control and make it look any way you like. You can make a listbox look totally customized. You can literally draw the key items of each control any way you like. Now why is this important ?

The downside to Metro apps is that they will only run on Windows 8. If you want your software to run on say Windows XP, Vista or Windows 7 as well as Windows 8 Metro, then you have to write two totally different apps. True a lot of non-UI stuff may be ported from the desktop to Metro apps, but the UI’s have to be totally different. Especially if you plan on supporting touch on Windows 8, UI design has to be very different with a Metro app compared to a desktop app.

But the real question is, why can’t we write software which will look good on all versions of Windows, including Windows 8 ? We can, but we may simply have to rethink how we design our user interfaces.  An app designed for Metro will not run on Windows XP, Vista or Windows 7. But if you design for the desktop and take advantage of the ability to customize your controls using what has been in Windows all along, then you cna build apps which can run on multiple versions of Windows, but will have the ability to take advantage of what ever operating system it is running on. For example, how about writing a program which can emulate the Metro style on Windows 8 as well as on Windows XP, Vista and Windows 7.  It is possible when using Windows ability to customize controls.

I have found Windows 8 does a very good job of supporting the core WIN32 API’s and these customization features. Also Windows 8 supports all the core API’s necessary for building your own unique custom controls to (custom window classes).

This is why when I designed my GUI engine (EZGUI – see:  http://cwsof.com ) one of the key factors I built in was this ability to customize. For example it supports high level customization of controls using ownerdraw and customdraw. It also provides low level methods of customization as well (for ownerdraw), even including the ability to subclass and superclass controls to make controls which work differently than the base class. I have found that simply providing a lot of high level custom controls is not enough. Why ? Because the more low level methods you provide for customization, the more choices programmers have for building a totally unique UI.

When I was building EZGUI, one of the things I found difficult at first was learning how to build custom controls using the Windows API. I actually had to go back to some very old books to learn how to do this, but a lot was simply gaining experience over time. I saw the advantage of building custom UI’s, so I not only built my own custom controls as part of EZGUI to go beyond the core UI elements in Windows, but I added to EZGUI the ability for programmers to more easily take advantage of many of the customization techniques I learned how to do.  The ability to build totally unique controls based on existing window classes (ie. buttons, listbox, combobox, menus, tab control, listview and label control) is a very powerful feature and it also works on all versions of Windows we need to support today (XP to Windows 8) and even older PC’s like Windows 95/98/ME/2000.

Download this simple app I wrote using EZGUI which demonstrates a number of these customization features which runs very well even on Windows 8:

http://cwsof.com/download/testwin8.zip

I did not stop there though. I found a number of core features which have been in Windows even since Windows 95/98 and tapped into them to build some unique custom controls, which rather than simply be just another high level UI control (like most you purchase today) they are actually designed to be building blocks so you can build some very unique and powerful custom controls of your own.

For example, EZGUI 5.0 Pro has a Canvas control, but a very unique on. It was designed to be both low level and high level. For example it is based on the Windows DIB engine and it supports DDB’s (device dependent bitmaps) as well as real DIB’s (device independent bitmaps) in 16,24 and 32 format. This means you can write low level code which can access pixel data directly. For example it was very easy for me to write image filters to modify the image and the code runs very fast because you are working at a low level. But that was not enough. I provided an extensive graphics command set for drawing into the Canvas control too. One example is the command which can draw a bitmap and rotate it up to 360 degrees, alphablend (or transparent BitBlt) and scale the image all with one command.

That is not all. I added my own proprietary 2D sprite engine to the control. What is a sprite ? A sprite is a non-rectangular image which can be moved, flipped, shown and hidden. Sprites are kept separate from the background image and the control merges the two when it repaints the control. Sprites can also be alphablended to the background and each other and even antialiased. They also support frame animation as well. EZGUI does not even require any special hardware to do this.

The Canvas control is a sort of building block control. It can be used to build almost any graphic oriented style control you may require. Do you need a custom charting control ? Build it yourself using the Canvas control. The core functionality is there to build a nearly endless variety of controls.

Well I didn’t stop there. I asked myself, what core functionality is missing in the standard controls in the Windows API ? I wanted some multimedia support, so I created my own MCI control with a simplified command set. It is easy to add video, MIDI, audio and CD audio to applications. One thing which is really missing in the Windows controls is a native 3D control. The problem with directx is that it was originally intended for building full screen games (or single window games). Because of this, I chose to use OpenGL. OpenGL was not only an easier API to work with, it also has the ability to be used in multiple child windows of an application. In essence OpenGL is well designed for using as a 3D engine for a custom control class. EZGUI 5.0 comes with its own glCanvas control which is OpenGL based. The problem with even OpenGL is it is a complex set of API’s which take time to learn how to leverage. So I build my own 3D scripting language right into the control. Now EZGUI’s glCanvas control was not designed as a game engine. There are plenty of other tools for that. EZGUI uses OpenGL in a real control. It is a building block so you can your own unique controls, but which are 3D based. I also chose a 3D model file format to support which is not your usual model format for 3D engines. Most 3D engines support 3D models geared towards building games. They key to gaming is to use models with low polygon counts, with high quality texture maps to produce a sense of realism.

EZGUI 5.0 supports the STL (3D prototyping such as used in 3D printing) model format. The format is an open format and it is amazingly simple. The one key feature of the STL format (binary) is that it is well suited to models with extremely high polygon counts. For example, download some STL model viewers and try to load a huge STL model and see how long it takes to load. I wrote a simple freeware app which can load a 3D model (STL) with a million polygons in about 1 or 2 seconds on an average 3D video card found today (in the $50 range, so even minimal).  Now this 3D control is not a game engine. It is just a 3D control so you can use it for anything you want, which can benefit from 3D. It could be useful in displaying 3D medical models. It could be useful for animating a 3D model of a machine.

The point is that the Windows desktop is still alive in Windows 8 and some very exciting software cna be built for the Windows 8 desktop, but which can work just as well on all your older Windows XP, Vista and Windows 7 computers.

Yes, what is a modern UI really ? I don’t think that being forced to the Metro style is really what I would call a modern UI . Now I do like Metro and for tablets it is a nice user interface, but I don’t think software developers should be limited by it. The desktop may provide some more powerful choices for the x86 Windows platform. The best feature is that with the right tools you can build a unique UI which will stand out on Windows 8, yet still have the benefit of backward compatiblity with Windows XP, Vista and Windows 7. Now that is something you just don’t get with Metro.

So build for Metro if it fits your needs, but don’t forget the Desktop ! Also be willing to building unique and customized user interfaces rather than feel forced to make your app look like everyone elses. Take advantage of the built in ways of customizing that the Windows API (WIN32) offers. If you are PowerBasic user, then consider EZGUI since it provides easy access to many of those features.


Comments Off

Windows Tablet PCs – What are they talking about ?

Today all the buzz online is that no one wants a Windows tablet PC anymore (ie. http://www.zdnet.com/blog/hardware/im-not-surprised-that-consumer-interest-in-windows-tablets-has-plummeted/16658   ) . The idea is that Windows 7 has failed on tablets because it is not touch oriented and Windows 8 is too far away. Now I don’t know how things will work out in the long run, since no one can foretell the future and who knows how markets will be a year from now. But this much I can say …

Were do they come up with the idea that Windows 7 is not touch oriented ?

Sure everyone is waiting for Windows 8, but what about the tablets running Windows 7 now ?

The problem is not with the operating system. The problem is with the applications for the operating system. You see Apples IPad operating system was built for touch and a small form factor so developers from day one created touch ready applications for it. Android became popular because of phones and it too used touch early on and developers wrote apps specific to that.

Windows is different. Windows has a long history on desktop (and laptop) PCs. Laptops uses touch pads (not the same as touch screens) and desktops use the mouse and all the software developed was for this form factor. The move from desktop to tablet is a challenge no doubt and Microsoft has a lot of work to do, but the real problem right now is not Windows, but developers who need to start developing applications specific to tablets and touch. You have to think differently when you design applications for touch. Windows developers are not there yet (they should be though).

Is Windows 7 really touch friendly ? Absolutely (anyone who says otherwise does not know what they are talking about). True it doesn’t have the cute Metro menu system yet and some of the nice features of Windows 8 , but Windows 7 does though support the key ingredient for touch. I am an experienced Windows API programmer and I am currently experimenting with touch. Touch is great when used properly. Windows 7 supports not only the mouse, but also two important window messages, WM_TOUCH and WM_GESTURE. This is how an application communicates with the touch system in Windows. Windows has long supported touch based pens (ie. for CAD), but is also supports hand gestures. It is the developer who has to start writing software specific to touch. It is there already.

I purchased a really nice 22 inch touch monitor for my wifes desktop computer. She is just tickled with it. I download the touch pak addon software from Microsofts web site which has some touch ready applications. They are really nice. I did notice one problem and that the software was a little sluggish (slow response) but I attribute that not to Windows but to the applications themselves. If you read my blog you know what I think about software bloat (ie. dot.net) and the likely reason for some poor responsiveness of Windows applications with touch is they are bloated (big and slow) and they just can’t keep up. If software was written like us PowerBasic programmers do it, it would be fast, small (use little disk space or memory) and be very responsive with touch.

Now I do have to do some more testing to see what works well with touch and what does not (ie. WM_TOUCH messages appear faster and more responsive than WM_GESTURE messages) but I do think Windows 7 (and 8) has great potential with tablet PC’s.

Now maybe part of the problem with interest in Windows tablet PC’s is that everyone seems to revel in Android tablets. When was the last time you saw a Windows tablet in the top 10 lists of many magazines ? They exist, but nobody seems to pay them any attention. I walked into an office (and computer) supply store (a national chain store) and asked if they had any Windows tablets. The guy said he didn’t even know they existed. So how is a person to get excited about a Windows tablet if computer stores don’t even sell them ? Staples doesn’t carry them. Other major chains don’t carry them. Ok, I know Windows tablets are a little pricing right now, but the Acer and Archos Windows tablets are the price of an IPad.

My question is … why wait until Windows 8 ?

Windows 7 tablets have real potential even right now. True we need a little more touch oriented software, but it will come in time. Developers need to start working on it now, rather than wait for Windows 8.

Windows has an amazingly long history behind it and it has great potential for tablet PCs.

 

 


Comments Off