| Comments

Who, didn’t think I’d see “Microsoft Corporation” listed in the Apple AppStore for iPhone this quick. 

Want to view gigapixel images on your iPhone?  The team at Live Labs just announced their approved iPhone App – Seadragon Mobile.

So what is Seadragon?  it was the original Microsoft Research project that many products are now based on.  Most popular probably is the Deep Zoom technology brought first to Silverlight 2.  This is the process of taking gigapixel image and providing a smooth viewing experience viewing that image over even lower bandwidth speeds.  One of the most popular Deep Zoom Silverlight sites is the Hard Rock Memorabilia site which shows over 500 of Hard Rock’s most collectable items, including the original Fender guitar from Clapton that started it all.

Now you can get that same viewing experience on the iPhone.  I installed it real quick and it was pretty impressive (viewed over WiFi connection).  Even though the Photosynth option is there, if you don’t read the fine print you’ll wonder why it keeps saying “Loading…” – it’s because it isn’t activated yet.  My guess is that the team wanted to have that option in there so they wouldn’t have to re-submit the app, but rather just turn on the collections.

So plug away!  Use Deep Zoom composer to create your collections with Deep Zoom Composer and view them in various ways now, including mobile.

The technology allows for you to look at an image like below and zoom in to see that the image is actually made up of cola cans ordered in a mosaic format:


Of course this is just a fun example, but there are others and with the Photosynth integration, it would be quite cool.  Check it out!

| Comments

As you may know, most wheel support is detected at the browser level.  In Silverlight, this makes adding mouse wheel support an interop action with the HTML host.  While people have implemented it, it has mostly been for the use of DeepZoom applications.  In fact, the latest DeepZoom Composer tool actually adds this support now if you choose to have a Silverlight project as a part of the output of the collection.

But what about other controls, namely ScrollViewer?  Having content in ScrollViewer enables ScrollBar functionality but doesn’t automatically respond to mouse wheel actions.  Adam Cooper has solved this gap problem by adding a helper class to which you can attach to your ScrollViewer object.  Let’s say our XAML is this:

   1: <ScrollViewer x:Name="MyScroller" Width="300" Height="100" Background="AliceBlue">
   2:     <TextBlock TextWrapping="Wrap">
   3:         Even if you use my workaround ...
   4:     </TextBlock>
   5: </ScrollViewer>

If we run the application our content is scrollable, but not with the wheel.  Add Adam’s control reference and these lines of code in our Page.xaml.cs class:

   1: using Cooper.Silverlight.Controls;
   3: public Page()
   4: {
   5:     InitializeComponent();
   7:     ScrollViewerMouseWheelSupport.Initialize(this);
   9:     MyScroller.AddMouseWheelSupport();
  10: }

and we have automatic wheel scroll support.  Great job Adam!  His post talks about various other methods of nesting and how it actually works.

It would be nice if you could just create MyCustomScrollViewer but unfortunately you cannot subclass ScrollViewer for some reason. 

Some might be also wondering how they could add this functionality to ListBox, since the default control template for ListBox contains a ScrollViewer.  Good question I thought as well and I went about trying.  There are some challenges to using the default ListBox.  First, the visual tree of the template is only loaded after the layout has been updated.  I’m not sure why it isn’t in Loaded, but in LayoutUpdated it is available.  So from this event you can use VisualTreeHelper.GetChild(ListBox, 0) to get the root node of the template.  From there you can use FindName(“ScrollViewer”) to get to the ScrollViewer in the default control template.

Here’s where it gets funky.

While you can add Adam’s extension method just fine with no exceptions, it doesn’t exactly work when rendered.  Here’s the code I used:

   1: void DefaultList_LayoutUpdated(object sender, EventArgs e)
   2: {
   3:     // root node
   4:     Grid rootGrid = VisualTreeHelper.GetChild(DefaultList, 0) as Grid;
   6:     // find the ScrollViewer
   7:     ScrollViewer scroller = rootGrid.FindName("ScrollViewer") as ScrollViewer;
   9:     // add the mouse wheel support
  10:     scroller.AddMouseWheelSupport();
  12:     // stop looking
  13:     DefaultList.LayoutUpdated -= new EventHandler(DefaultList_LayoutUpdated);
  14: }

And while no errors occur, I believe other events in the ItemTemplate are eating my events.  If anyone has any wise thoughts, post the comments here.  But either way, thanks Adam for this great utility for ScrollViewer!

| Comments

Remember Photosynth?  Remember when you first saw it and your initial smile came across you in that ‘this is cool’ kind of feeling?

Multiply that.

A team at the University of Washington in conjunction with Microsoft Research presented “Finding Paths Through the World’s Photos” at SIGGRAPH2008.  I haven’t read the paper yet, but the video speaks for itself in the advancements of photo recognition and path interpolation to me:

There is some really similar Photosynth and DeepZoom stuff happening here, but a lot more as well.  You can visit their site to read more and also download some code from some of the parts of the system.

UPDATE: And when you are done watching this, check out Unwrap "editing video is now as easy as editing a single image." -- Um freaky.

| Comments

I’ve had a couple things sitting in my inbox for a week or so and rather than call them out individually and take up your precious aggregation space, I’ll summarize them here.

3rd Party Silverlight Controls

Got a note from Valentin about the roadmap for the Telerik Silverlight controls.  As they’ve previously noted, they are planning a set of controls: Window, Menu, TreeView, TabControl, PanelBar, Cube, ComboBox, Upload, Calendar, DatePicker, NumericUpDown, MediaPlayer, Range Slider, ProgressBar, WrapPanel, DockPanel, UniformGridPanel.  Right now it looks like they are incorporating the feedback provided and doing some polish work like adding Blend tool support for skinning, etc.  They also announced a Grid and Carousel control for Silverlight as well.  I particularly thought their mention of working on something similar to their RadDock for Windows for Silverlight sounded particularly interesting.

Silverlight Sidebar Gadget Template

Microsoft has a program called Student Partners.  These are individuals still in higher education and have shown their enthusiasm toward Microsoft technologies.  I’ve had the pleasure of meeting quite a few of these individuals and appreciate their energy around geekness.  Ioan Lazarciuc is one such Student Partner and took one of my previous samples of a Vista Sidebar Gadget Template for Visual Studio and Silverlight-ified it…enabling a template for creating Silverlight content-enabled Vista Sidebar Gadgets.

Ion’s got a great post about the work and the known issues that he still faces and had to get used to.  Go check it out and give some feedback on the work!

Deep Zoom and Mosaics

Creating Deep Zoom applications seem to be all the rage these days :-).  Another tool is making it more fun (and easier) to create some pretty cool visualizations with Deep Zoom and images.  The tool is Andrea Mosaic and is a tool to take a set of images and make a mosaic picture out of the images.  Then taking those mosaic collections and Doom Zoom-ifying them.  One hilarious implementation is the DeepLOL, using the various LOLCat phrases/images.  Take a look at what Rob Burke did (via Silverlight Streaming – hint: move your mouse and zoom in with the scroll wheel):


Of course you’ve probably heard of the Olympics on NBC.  The NBCOlympics.com by MSN site is serving over 3,600 hours of online content live and on-demand for your viewing pleasure.  If you install Silverlight you’ll get to enjoy the enhanced player experience that will deliver HD-quality content to your computer in the comfort of your own home.  I’m pretty excited to see some of the Olympics this year and will have to check out this experience for some of the live events.  I already like the HD experience I’ve seen so far…check it out!

That’s a few I had in my queue…more to come!

| Comments

Have you seen those television commercials about used car markets and someone standing in a white background and as they vocalize their automobile preferences the selections fly in and around them.  That’s what I was reminded of when I came upon the new feature on Kelley Blue Book’s comparison feature on their site.  I had previously written about some innovative uses of DeepZoom with Jose’s samples and I like what KBB has done here as well.

They’ve leveraged Silverlight with DeepZoom in a way that provides some good user functionality but at the same time provides a line-of-business application for their organization.  You can get to the comparison feature by starting at their Perfect Car Finder® section of their site and clicking the Photo Edition near the bottom of the application.  Once launched you are presented with an array of vehicles which you can start trimming down by using the controls to specify your preferences.  As you enter options the images of vehicles filter and wrap into a new grid view.

I saw something that I’ve been working on as well for a blog post used in this application…a range control:

I did some snooping and was able to spend some time chatting with the developers of this beta application for KBB.  It was great to hear how they’ve got to this point in such a short time (abt a week) and with a developer who said this was his first Silverlight application.  I like that they had a need for a custom control and built it.  If you play around with it on the site you can see that it is basically the Slider functionality with two Thumb controls (which is the direction of my sample as well).  Changing these slider values also filters the car selections as well.

The car pictures are the DeepZoom portion of the application and do what you’d expect any DeepZoom app to do at this point with some great resolution photos.  One thing that KBB has done here is monitor where you (the user) are viewing within the DeepZoom collection and provide some highlighting of the car you are looking at (via a border).  Once you click on a specific vehicle it also zooms directly into that vehicle to provide you additional information.

They are making use of knowing where the user is as well as where in the collection that car exists to provide the best functionality to the end user.

I think this is another great use of Silverlight and DeepZoom together to provide some business functionality that is fun for the customer and functional for their organization.  It’s a great mix of services and client technology.  In talking with their developers I made a few suggestions that I think could even enhance the overall user experience and they understand they have some refinement they are desiring to do as well.  But from nothing to an integrated experience in a short time is great!  I’m looking forward to see how this application evolves.  Go check it out and tell them what you think.  Great job KBB team!