Welcome to MSDN Blogs Sign in | Join | Help

Great Windows SideShow Development Machine – Dell XPS 420

I recently obtained a Dell XPS 420 desktop machine with integrated Windows SideShow display, and I’ll have to say, this is one killer machine! First off, it’s equipped with the Intel Core 2 Quad CPU. It’s also got 3GB ram, DVD-RW drive, Case mounted SideShow display, dual display support, a nice case, and much more.

 

The XPS 420 is a nice looking machine:

 

You’ve gotta love it when you see this in task manager:

 

In order to get additional SideShow gadgets, you first need to visit the Live gallery for SideShow, then visit the SideShow control panel to enable the SideShow gadgets you installed for use on the XPS MiniView SideShow device (the one built into the case of the XPS 420).

 

Here’s the SideShow control panel:

 

Overall I really like this machine. It’s great to have SideShow functionality on a desktop, it makes SideShow development convenient, and it’s a real powerhouse!

 

Later,

Gavin

Posted by GavinGear | 0 Comments
Filed under:

SideShow News: New Device SDK for .NET Micro Framework v1.4

The SideShow team has been working on a new firmware SDK release for .NET Micro Framework device platforms for quite a while now. Well, that release has been released to the web, you can download it here:

http://www.microsoft.com/downloads/details.aspx?FamilyID=b877c01d-e80e-4f30-9df9-3a46ec519704&DisplayLang=en

 

Some highlights from this SideShow release:

-          Support for Bluetooth connected SideShow devices (works with new PC driver to be released shortly)

-          A new portrait QVGA UI

-          A new SideShow simulator

-          Enhanced debugging

 

Some highlights from the .NET Micro Framework 2.0 SP1 release:

-          Code signing for firmware

-          TFConvert – can convert TrueType fonts into bitmaps

-          Tools for OEM/ODM deployment solutions

 

It will be exciting to see new SideShow devices based on this firmware SDK!

 

Later,

Gavin

Introduction to Windows SideShow

I’m now working on the SideShow team here at Microsoft, so I thought I’d transition to talking about the SideShow from a developer’s perspective in this blog. First, let’s get acquainted with what SideShow is…

 

So what is Windows SideShow?

Windows SideShow is a technology (new for Windows Vista) which enables you to view content from your PC on device displays which are not primary or secondary monitors. An example would be the “in-lid display” (like you have on the outside of a flip phone) on the ASUS W5fe:

 

w5fe

 

So how can you view content on your SideShow display?

SideShow content is sent to the display by software applications running on the PC called “SideShow Gadgets”. First you install the gadget (See the SideShow gadget  gallery here: http://gallery.live.com/default.aspx?pl=7 ) then you enable and configure the gadget via the SideShow Control Panel page. Once the gadget is enabled it will show up and be selectable on the SideShow device.

 

Why do I need SideShow?

One example of using your SideShow display is when your PC is closed and asleep (say you’re on your way to a meeting). You can access email, media, your calendar and more while the notebook is closed! (Using the ASUS W5fe as an example). This is really just the tip of the iceberg in terms of how SideShow is useful. We’ll get into more scenarios in later posts.

 

That’s your basic introduction to SideShow, if you’re interested in more reading, here are a couple links:

http://www.microsoft.com/windows/products/windowsvista/features/details/sideshow.mspx

http://msdn2.microsoft.com/en-us/library/ms744147.aspx

 

Next, we’ll start to look at SideShow Gadgets in more detail…

Posted by GavinGear | 0 Comments

Silverlight Ink SDK Sample Available on Microsoft Downloads

There's a new sample live on downloads.microsoft.com that I wrote a while ago that demonstrates implementing ink support in Silverlight using a reusable class called "InkCanvas" - InkCanvas code was originally written by Sam George here at Microsoft. This sample implements reusable functionality similar to the InkCanvas element in WPF.

Screenshot of SDK sample in action on my Toshiba M400 Tablet PC:

Silverlight SDK Sample in action

Play with it and see what you think!

I'll dig into the details on this one in a future post here soon.

Have a good one,

Gavin

Something new... now working on the Windows SideShow Platform

Well, I'm no longer working on the Silverlight project (but will still blog about it occasionally). It was a lot of fun, but times change :).

I enjoy working on APIs, and now I'm working on the Windows SideShow API. SideShow is cool (and getting cooler) - so expect to see some developer oriented articles on this site in the near future.

Later,
Gavin

Posted by GavinGear | 0 Comments

Check out this Silverlight Ink-Enabled search site!

My friend Loren has really out done himself this time! Check out this Silverlight Ink-enabled Google search page, it rocks! Ink is collected in the Silverlight control, and Ink content is transformed to XML, uploaded to a server via AJAX, and the result is returned. This solution acts a lot like the TIP on Windows Vista (for Tablet PCs) but does it in a web page with handwriting recognition happening on the server. It even supports scratchout!

Here's the links:
Loren's blog entry: http://journals.tuxreports.com/lch/archives/004425.html
Ink-enabled Google search page: http://www.tabletpcpost.com/search

Ink search in action:

Later,
Gavin

Posted by GavinGear | 1 Comments

It's here, It's here, It's here!!! Silverlight 1.0 RTW!

Well, today Microsoft released Silverlight 1.0 to the web! This marks a major milestone for Microsoft's web technology portfolio, and I'm really excited that Silverlight 1.0 has been completed, and is available for download here:

http://www.microsoft.com/silverlight/downloads.aspx 

For example code, community blogs, etc, try www.silverlight.net, Have fun! 

Later,
Gavin

Posted by GavinGear | 1 Comments

Time to upgrade your Silverlight code to RC1!

If you've been working on Silverlight projects using the Silverlight 1.0 Beta, it's time to gear up for RTM by migrating your code to the RC1 build of Silverlight. Here's what you need to do:

Download the RC1 build of Silverlight:
http://www.microsoft.com/silverlight/downloads.aspx#2_0

Update your code to be compatible with breaking changes in the Silverlight runtime between the 1.0 Beta, and the RC1 build: (this post includes a link to the updated Silverlight.js file)
http://blogs.msdn.com/jstegman/archive/2007/06/06/more-v-1-0-changes.aspx

There you have it! You'll soon be running your code against the RC1 build, and you'll be on your way towards RTM compatibility!

'till next time,

Gavin

Posted by GavinGear | 0 Comments
Filed under:

Introducing the Silverlight Xaml Ink Builder tool: Creates Silverlight-Compatible Ink Xaml

In my last post, I demonstrated how to specify static Ink Xaml for a Silverlight InkPresenter element. Here’s a simple tool that allows you to collect Ink on a WPF inking surface, then convert that WPF Ink to Silverlight Ink Xaml. Note that WPF Ink is higher resolution, so in some cases StylusPoints are duplicated (successive StylusPoints with the same value). The executable requires the 3.5 CLR, and is attached to this post.

 

Here’s a screenshot of the tool being used to create Silverlight Ink Xaml:

 

Until next time,

Gavin

How To: Static Xaml Ink in Silverlight

In the examples that I’ve shown so far, I’ve demonstrated Ink collection in Silverlight using the InkPresenter element. But what if you don’t want to collect ink from a user, but rather want to show or “play back” static Ink? Well, this can be a nice option if you wanted to show Ink content in an advertisement for example. The easiest way to do this is to specify static Ink content in Xaml. The Ink Xaml is nested in the InkPresenter element that will show the Ink, it’s that simple.

 

Here’s an example of what your InkPresenter Xaml would look like if you had only one Stroke consisting of 6 StylusPoints:

<InkPresenter Width="200" Height="100">

  <InkPresenter.Strokes>

    <StrokeCollection>

      <Stroke>

        <Stroke.StylusPoints>

          <StylusPoint X="25" Y="21"/>

          <StylusPoint X="25" Y="21"/>

          <StylusPoint X="25" Y="21"/>

          <StylusPoint X="25" Y="21"/>

          <StylusPoint X="25" Y="20"/>

          <StylusPoint X="25" Y="18"/>

        </Stroke.StylusPoints>

      </Stroke>

    </StrokeCollection>

  </InkPresenter.Strokes>

</InkPresenter>

 

In this case,  you would not need any JavaScript codebehind to get the InkPresenter to display this Ink. That can greatly simplify your web content if that’s all you needed.

 

So what if you want to spefify the way each Stroke looks? Then you could specify DrawingAttributes in Xaml for each Stroke as shown here:

<InkPresenter Width="200" Height="100">

  <InkPresenter.Strokes>

    <StrokeCollection>

      <Stroke>

        <Stroke.DrawingAttributes>

          <DrawingAttributes Color="blue" OutlineColor=red" Width="5" Height="5"/>

        </Stroke.DrawingAttributes>

        <Stroke.StylusPoints>

          <StylusPoint X="25" Y="21"/>

          <StylusPoint X="25" Y="21"/>

          <StylusPoint X="25" Y="21"/>

          <StylusPoint X="25" Y="21"/>

          <StylusPoint X="25" Y="20"/>

          <StylusPoint X="25" Y="18"/>

        </Stroke.StylusPoints>

      </Stroke>

    </StrokeCollection>

  </InkPresenter.Strokes>

</InkPresenter/>

 

In this case, you would have a single Stroke with 6 StylusPoints that was red with a blue outline, and 5 pixels thickness.

 

So that gives you an idea how  you could specify Ink in your Xaml file. One could also store the Xaml for the StrokeCollection in an xml file (or as a string built up in JavaScript), call createFromXaml() with that xml, then set the StrokeCollection property of an existing InkPresenter  to the one created from xml to cause the ink from the xml file to be displayed using the existing InkPresenter. So, as we can see here- this technique is one of the building blocks of Ink persistence in Silverlight.

 

Later,

Gavin

Posted by GavinGear | 0 Comments
Filed under:

Silverlight 1.1 Ink Demo by Mark Johnston of MSDN UK

Here's a 6 minute video showing how to get started with Ink support in Silverlight 1.1 by Mark Johnston from MSDN UK:
http://www.microsoft.com/uk/msdn/nuggets/nugget/248/Silverlight-Using-Ink.aspx 

His video will guide you through the process of integrating Ink support into your Silverlight 1.1 project. The concepts are basically the same as the Silverlight 1.0 code samples that I've shown you, but you develop your codebehind in C# rather than JavaScript.

Cool stuff!

Till next time,
Gavin

Product Review: Toshiba M400 Tablet PC

Review: Toshiba M400 Tablet PC

Rating: 4/5

 

 

 

I’ve been using my Toshiba M400 for about 7 months now, so I thought I’d do a quick review on this Tablet PC hardware to share my experiences. This is not the first Toshiba Tablet PC that I’ve had. The machine I was replacing was a Toshiba MM200, which proved to be a very robust high quality piece of hardware. It featured a 1400x1050 display, 1GB ram, and a great digitizer. Since I use my Tablet PC to write code, I got used to the 1400x1050 display resolution, and wanted something comparable. I needed something with the horsepower required to run Vista efficiently, so I took a look at the M400. I liked the fact that the size and weight was the same as the M200, but it also had a built in DVD burner. I opted for the Core2-Duo model with 2GB RAM. I’ve run both XP Tablet PC edition, as well as Vista, and both perform real well on this Tablet PC. The screen is great, and it has been very reliable. My only real complaint is that Toshiba doesn’t know where to put the Windows key J.

 

Pros:

-          Powerful

-          Good form factor

-          Reliability

-          Features

 

Cons:

-          Heavy

-          Battery Life (about 2 hours with screen at 50%)

Posted by GavinGear | 1 Comments
Filed under:

New Silverlight Ink developer sample, convert Journal files to Silverlight web pages!

A co-worker of mine, Stefan Wick has created a great new Silverlight Ink sample. This sample includes a command line program that converts Windows Journal files (.jnt) to silverlight web pages. This is a great way to learn about the Journal Reader component in the Tablet PC SDK, and how to create interactive Ink content with Silverlight.

 

Here’s the sample code

Here’s the live page: Silverlight version of a converted Journal note

 

Screenshot of converted Journal file in IE:

 

**Note that you’ll need the 1.0 Beta version of Silverlight to view the live webpage, click on the Silverlight icon to install (if page does not show)

 

Until next time...

-Gavin

Posted by GavinGear | 2 Comments

How To: Create an Ink-Enabled Sidebar Gadget Using Silverlight

Have you ever said to yourself “Hmmmm… I have some ideas for Sidebar gadgets… I should really learn how to create one” Well, the good news is, it’s rather easy to create sidebar gadgets! In fact, it’s easy to create Sidebar gadgets that use Silverlight content. In this post, I’ll show you how to use Silverlight to create an inkable surface on a sidebar gadget.

 

Here’s the example running on my desktop:

 

Here’s the complete article that I used to learn how to create sidebar gadgets:

http://msdn2.microsoft.com/en-us/library/ms723694.aspx

 

Step 1: Create a directory under “%userprofile%\AppData\Local\Microsoft\Windows Sidebar\Gadgets” called foo.gadget where “foo” is the name of your gadget

 

Step 2: Create the main HTML file for your gadget – for this example, that HTML looks like the following:

<html>

<head>

    <title>Silverlight Ink Note</title>

    <style>

        body

        {

            margin: 0;

            width: 153px;

            height: 200px;

        }

        #gadgetContent

        {

            width: 153px;

            top: 24px;

            text-align: center;

            font-family: Tahoma;

            font-size: 10pt;

            position: absolute;

        }

        #background

        {

            width: 153px;

            height: 200px;

            position: absolute;

            z-index: -1;

            background-repeat: no-repeat;

        }

    </style>

    <script type="text/javascript" src="silverlight.js"></script>

    <script type="text/javascript" src="createsilverlight.js"></script>

    <script type="text/javascript" src="ink.js"></script>

</head>

<body>

    <g:background

        src="clipboard.png"

        id="SLInkNoteBg"  

        style="position:absolute;width:153px;height:200px;z-index:-1"/>

    <span

        id="gadgetContent"

        style="font-family: Tahoma; font-size: 10pt;">

    <table width="103" cellspacing="0" cellpadding="0" height="140" border="0" background="transparent.gif">

        <tbody>

                <tr><td height="33"/></tr>

            <tr>

                        <td align="middle" valign="middle">

                    <div id='agControlHost1' class='playerDiv' background="none">

                        <script type="text/javascript">

                            createSilverlight();

                        </script>

                    </div>

                </td>

            </tr>

        </tbody>

    </table>

    </span>

</body>

</html>

 

Step 3: Add the gadget.xml file. This is the configuration file for the gadget. For this example, that XML looks like the following:

<?xml version="1.0" encoding="utf-8" ?>

<gadget>

    <name>Silverlight Ink Note</name>

    <namespace>Example.You</namespace>

    <version>1.0.0.0</version>

    <author name="Gavin Gear">

        <info url="http://blogs.msdn.com/gavingear" />

    </author>

    <copyright>&#169; 2006</copyright>

    <description>Silverlight Ink In Sidebar Demo</description>

    <hosts>

        <host name="sidebar">

            <base type="HTML" apiVersion="1.0.0" src="Silverlight_Note.html" />

            <permissions>Full</permissions>

            <platform minPlatformVersion="1.0" />

        </host>

    </hosts>

</gadget>

 

Step 4: Add the supporting Silverlight files (createsilverlight.js, Silverlight.js, ink.xaml, ink.js, clipboard.png, transparent.png) to the gadget directory (see attachment to this blog post)

 

Step 5: Open sidebar (if not open), click the + icon at the top of sidebar to add gadgets, and then double click on the icon for the gadget you just created.

 

That’s it! It’s really quite easy to create gadgets from Silverlight content!

 

Later,

Gavin

How To: Create a Silverlight Hypertext Application for Ink Photo Annotation

In the following blog entry:

http://blogs.msdn.com/gavingear/archive/2007/05/02/how-to-implement-an-ink-enabled-silverlight-photo-annotation-webpage.aspx

 

I showed you how to implement a basic Silverlight ink photo annotation webpage. But what if you want to have all of the code encapsulated in one file, and what if you don’t want to use IE as your host? Well, one option is to convert your page to a “Hypertext Application” file (.HTA). The basic steps are to take your xaml, JavaScript, and HTML, and combine them into one HTML file, and save that file with a .HTA file extension rather than a .HTM or .HTML extension. A coworker of mine (Stefan Wick) demonstrated this concept, and I thought I would pass it on to you. In this example, just make sure the image(s) you are annotating are available in the proper location specified relative to the .HTA file.

 

Here's the example HTA file using the code and image from the previous post: 

 

<!-- Silverlight Photo Annotation HTA Example -->

<!-- Gavin Gear, 06/2007 -->

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

  <head>

    <title>Photo Annotation HTA</title>   

    <script type="text/XAML" id="xaml1">

        <Canvas xmlns="http://schemas.microsoft.com/client/2007"

            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

            Loaded="javascript:root_Loaded"

            x:Name="root"

            Width="800" Height="533"<