<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://pavanpodila.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fpavanpodila.spaces.live.com%2fcategory%2fapps%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>the WPF way...: apps</title><description /><link>http://pavanpodila.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catapps</link><language>en-US</language><pubDate>Tue, 25 Mar 2008 03:33:19 GMT</pubDate><lastBuildDate>Tue, 25 Mar 2008 03:33:19 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://pavanpodila.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-7161136268153875560</live:id><live:alias>pavanpodila</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Initial release of XamlXporter (0.1 alpha)</title><link>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!182.entry</link><description>&lt;p&gt;As promised I've uploaded the source and binaries of XamlXporter. XamlXporter is a script for exporting Illustrator artwork in WPF/XAML. It is written in C# 2.0 for easier maintainence. &lt;p&gt;It currently exports the following objects from Illustrator CS2: &lt;ul&gt; &lt;li&gt;Strokes  &lt;li&gt;Linear and Radial gradients  &lt;li&gt;Text (single - line only)  &lt;li&gt;Opacities  &lt;li&gt;Visibility  &lt;li&gt;Paths  &lt;li&gt;Colors (CMYK, RGB, Spot, Gradients, Gray)  &lt;li&gt;Layers, Groups, CompoundPaths  &lt;li&gt;XAML comments&lt;/ul&gt; &lt;p&gt;For more details about this project visit &lt;a title="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=xamlxporter" href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=xamlxporter"&gt;http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=xamlxporter&lt;/a&gt; &lt;p&gt;  &lt;p&gt;A previous blog post about this project can be found &lt;a href="http://pavanpodila.spaces.live.com/blog/cns!9C9E888164859398!172.entry"&gt;here&lt;/a&gt;. &lt;p&gt;  &lt;div&gt;Technorati tags: &lt;a href="http://technorati.com/tags/wpf" rel=tag&gt;wpf&lt;/a&gt;, &lt;a href="http://technorati.com/tags/xaml" rel=tag&gt;xaml&lt;/a&gt;, &lt;a href="http://technorati.com/tags/illustrator" rel=tag&gt;illustrator&lt;/a&gt;, &lt;a href="http://technorati.com/tags/exporter" rel=tag&gt;exporter&lt;/a&gt;, &lt;a href="http://technorati.com/tags/codeplex" rel=tag&gt;codeplex&lt;/a&gt;, &lt;a href="http://technorati.com/tags/release" rel=tag&gt;release&lt;/a&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-7161136268153875560&amp;page=RSS%3a+Initial+release+of+XamlXporter+(0.1+alpha)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pavanpodila.spaces.live.com&amp;amp;GT1=pavanpodila"&gt;</description><comments>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!182.entry#comment</comments><guid isPermaLink="true">http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!182.entry</guid><pubDate>Thu, 26 Oct 2006 12:02:49 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pavanpodila.spaces.live.com/blog/cns!9C9E888164859398!182/comments/feed.rss</wfw:commentRss><wfw:comment>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!182.entry#comment</wfw:comment><dcterms:modified>2006-10-29T22:38:43Z</dcterms:modified></item><item><title>XAML Exporter for Illustrator using the CS2 COM Type Library</title><link>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!172.entry</link><description>&lt;div&gt;Technorati tags: &lt;a href="http://technorati.com/tags/WPF" rel=tag&gt;WPF&lt;/a&gt;, &lt;a href="http://technorati.com/tags/XAML" rel=tag&gt;XAML&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Apps" rel=tag&gt;Apps&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Exporter" rel=tag&gt;Exporter&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Illustrator" rel=tag&gt;Illustrator&lt;/a&gt;&lt;/div&gt; &lt;p&gt;I guess the title for this blog post answers 90% of what I had to say ;)  &lt;p&gt;Yes, I have spent the last few days working on using the scripting object model for Illustrator CS2 to export the artwork to WPF/XAML. The code is entirely in C# / .Net 2.0 and uses the Illustrator CS2 COM Type Library. Now you may be wondering why I did one more Illustrator-XAML exporter, when there is already one by Michael Swanson. Couple of reasons: &lt;ul&gt; &lt;li&gt;I wanted to add some export options for creating ControlTemplates, DataTemplates etc. as the top-level tag instead of Viewbox. That way I could just load them up in Expression Interactive designer and add animations, data-bindings etc.  &lt;li&gt;The source code for Swanson's plugin was not available. It was in C++ and really a step back for me, after having spent a considerable amount to time in the C# world ;)  &lt;li&gt;I also wanted to add a XAML preview and a simple XAML editor like XamlPad, all in the same application.  &lt;li&gt;Moving forward, I would be adding some more features that are fine-tuned to the way in which we consume Illustrator artwork, in our company. We are building our own Designer - Developer workflow and to make that more seamless, the Exporter will need to have some more features.&lt;/ul&gt; &lt;p&gt;I am also glad to announce that I will be making the code freely available on CodePlex. I have already setup the project &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=xamlxporter"&gt;here&lt;/a&gt;. Once I finish cleaning up the code I'll upload it. If people are really interested, I could speed up things a little ;) &lt;p&gt;Here are some screenshots of the Exporter. I am using a 3rd party component for the Ribbon UI. I'll be replacing that with a plain Winforms UI. &lt;p&gt;  &lt;p&gt;&lt;strong&gt;1. The artwork in Illustrator:&lt;/strong&gt; &lt;p&gt;&lt;img height=480 src="http://tk4.storage.msn.com/x1pUXuoQw6UT5_lWK8toAz6R38fFBeOmz-I8FMmQMe64qmy36h_rpvEChPU6FW0Ap1MVvRDAQl6-vuST-_bpI8q4l-Yz1ls-EqBv_uxqCJ6dUPOrZzhk02L2K-FpZ9Xbdqj6Vqs0VyNpJEnGvsWmYzqXw" width=637&gt;  &lt;p&gt;  &lt;p&gt;2. The application with the exporter XAML + preview. The editor is just like in XamlPad. You can edit and see the changes happen dynamically to the preview. I am using the TextEditor component from the &lt;a href="http://www.icsharpcode.net/OpenSource/SD/"&gt;SharpDevelop project&lt;/a&gt;, which gets me the Visual Studio style syntax highlighting, code-folding etc... &lt;p&gt;&lt;img height=674 src="http://tk4.storage.msn.com/x1pUXuoQw6UT5_lWK8toAz6R38fFBeOmz-I8FMmQMe64qnd6OCioGV5VFFNJBHRhcwafTKFps4gork7DxU5nC1vJyLxFttbewJcd9Fm_t10saTzSfcqFNfyWbI1CgMfihuyVqfOyt2Pb_PqTyF9K5XbzA" width=572&gt;  &lt;p&gt;  &lt;p&gt;&lt;strong&gt;3. The preview zoomed in:&lt;/strong&gt; &lt;p&gt;&lt;img height=674 src="http://tk4.storage.msn.com/x1pUXuoQw6UT5_lWK8toAz6R38fFBeOmz-I8FMmQMe64qlCYyPTKgDVPoT74NgaBQcVZBUMx5JETPDdZ79mHrn9Gqg3nS49xjEQLAYSG2HB6Gmh8OBwMT4InI1851s0ePdDANxl0Zxr9UNRrQ9ebgOuHw" width=572&gt;  &lt;p&gt;  &lt;p&gt;&lt;strong&gt;4. Some text&lt;/strong&gt; &lt;p&gt;&lt;img height=674 src="http://tk4.storage.msn.com/x1pUXuoQw6UT5_lWK8toAz6R38fFBeOmz-I8FMmQMe64qkQI0CWklWLENQEIWqY4xseMjKucAH5B0OFMxf7ISSsqITCFiGZy7BlVlhuhcdZTc8wvYHFjWIe4YuOYodDyvI97MyRwHOIEUlsT0d1ktDfFg" width=572&gt;  &lt;p&gt;  &lt;p&gt;Here is a quick rundown of exported objects: &lt;ul&gt; &lt;li&gt;Strokes  &lt;li&gt;Linear and Radial gradients  &lt;li&gt;Text (single - line only)  &lt;li&gt;Opacities  &lt;li&gt;Visibility  &lt;li&gt;Paths  &lt;li&gt;Colors (CMYK, RGB, Spot, Gradients, Gray)  &lt;li&gt;Layers, Groups, CompoundPaths  &lt;li&gt;XAML comments&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-7161136268153875560&amp;page=RSS%3a+XAML+Exporter+for+Illustrator+using+the+CS2+COM+Type+Library&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pavanpodila.spaces.live.com&amp;amp;GT1=pavanpodila"&gt;</description><comments>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!172.entry#comment</comments><guid isPermaLink="true">http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!172.entry</guid><pubDate>Fri, 13 Oct 2006 16:04:37 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pavanpodila.spaces.live.com/blog/cns!9C9E888164859398!172/comments/feed.rss</wfw:commentRss><wfw:comment>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!172.entry#comment</wfw:comment><dcterms:modified>2006-10-14T13:10:32Z</dcterms:modified></item><item><title>A Water ripple effect using a 3D Mesh</title><link>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!141.entry</link><description>&lt;p&gt;Particle effects like fire, fog, snow, ripples in water are very captivating. I love the way Max OSX uses these effects to create a great user experience. For example OSX has a nice ripple effect in the background when you add a Dashboard Widget. That effect has been my inspiration for creating something similar in WPF. Fortunately WPF makes it a lot simpler to create effects like that using the 3D API. &lt;p&gt;I had done effects like fire, plasma, jello and also water using the VGA graphics. Back then it was pretty cumbesome but the techniques employed are still valid. Unfortunately I don't have any of the source code so it was back to Google for help. After a bit of searching I found a great &lt;a href="http://freespace.virgin.net/hugo.elias/graphics/x_water.htm"&gt;tutorial&lt;/a&gt; for creating the water effect. &lt;p&gt;In short the tutorial suggests that the ripple is a change in the elevation of the different points on the surface. The elevation changes happen sinusoidally (like a sine wave) coupled with a damping effect. The way I created the effect is by using a MeshGeometry3D and subdividing it into a grid of points. More the number of points in the mesh, more smooth is the effect. Once we have the mesh of points, the next step is to change their elevation. In my case my mesh was positioned at Z=0 (ie. in the XY-plane), so all I had to do was to change the Z-coordinate. To get an animated effect, I set up a DispatcherTimer at an interval of 100 milliseconds and at every interval I use the technique from the tutorial to manipulate the Z-coordinate. &lt;p&gt;The end result can be seen in this &lt;a href="http://www.mediamax.com/pavan_podila/Hosted/MySpacesBlog/WaterEffect.mov"&gt;Quicktime movie&lt;/a&gt;. You can also download the &lt;a href="http://www.mediamax.com/pavan_podila/Hosted/MySpacesBlog/WaterEffect.zip"&gt;binary&lt;/a&gt; and check it out on your own machine. Make sure you have the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=19E21845-F5E3-4387-95FF-66788825C1AF&amp;amp;displaylang=en"&gt;RC1 release of .Net Framework 3.0&lt;/a&gt; installed. &lt;p&gt;&lt;a href="http://www.mediamax.com/pavan_podila/Hosted/MySpacesBlog/WaterEffect.mov"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;text-align:center;border-right-width:0px" height=480 alt="Water effect movie" src="http://tk4.storage.msn.com/x1pUXuoQw6UT5_lWK8toAz6R38fFBeOmz-I8FMmQMe64qkh122FTzxtgk5ZFilOwDcGr5CgKMR3SJPXNodLHqmBA3NwLboprd-5-3IUlHPzACj8KE5floJu_PTJ1apGqH5eefzmnAqGP7hCsTUCbdwgaA" width=550 border=0&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;Reusability&lt;/strong&gt; &lt;p&gt;One of the challenges I have right now is in making these effects reusable. Making 2D effects reusable is more simpler since most of them can be encapsulated into a Storyboard but effects which require 3D Mesh deformations and morphs are more challenging. There are couple of options however: &lt;ul&gt; &lt;li&gt;Subclass Viewport3D and use the &lt;strong&gt;CompositionTarget.Rendering&lt;/strong&gt; event  &lt;li&gt;Use Attached Properties to attach to different UI controls&lt;/ul&gt; &lt;p&gt;I will explore these and put up some posts once I have the desired results.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-7161136268153875560&amp;page=RSS%3a+A+Water+ripple+effect+using+a+3D+Mesh&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pavanpodila.spaces.live.com&amp;amp;GT1=pavanpodila"&gt;</description><comments>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!141.entry#comment</comments><guid isPermaLink="true">http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!141.entry</guid><pubDate>Tue, 12 Sep 2006 12:40:03 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pavanpodila.spaces.live.com/blog/cns!9C9E888164859398!141/comments/feed.rss</wfw:commentRss><wfw:comment>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!141.entry#comment</wfw:comment><dcterms:modified>2006-09-12T12:43:47Z</dcterms:modified></item><item><title>Screens and Transitions - a cool WPF app</title><link>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!140.entry</link><description>&lt;p&gt; &lt;p&gt;I have been working on a cool new WPF application that is supposed to run on a big Plasma display. It is going to be a non-interactive application that shows some information in the form of screens. A screen is a term we are using to denote a visual representation of some information. Some examples of screens we have include a Statistics screen that shows some numbers in a tabular format, a Photo Album that neatly lays out some photos (say from the last night's party) and does some &lt;a href="http://pavanpodila.spaces.live.com/blog/cns!9C9E888164859398!130.entry"&gt;cool slideshow effects&lt;/a&gt;, etc. Each screen will stay on the display for a certain time after which a transition-animation will be played to switch to a different screen. The application has a plugin architecture, which makes screens as well as transitions, pluggable. A developer could create his own nifty screen, package it into a DLL and drop it into a known location. The application would pick that up the next time it loads.  &lt;p&gt;Similarly transitions between screens are also pluggable. Some of the transitions that we have developed are Cube Rotations where the previous and the next screen are visually mapped to the two side faces of a cube; when the cube completes its rotation, the new screen fills the display. There are other transitions like fade-ins, zoom-ins and a flip-card like transition (think about the transition to Dashboard widgets options page in MacOSX). In fact the Cube rotation is also similar to the fast-user-switching in MacOSX...we are certainly getting lot of inspiration from that OS ;) &lt;p&gt;If you have seen the &lt;a href="http://channel9.msdn.com/showpost.aspx?postid=116327"&gt;North Face demo&lt;/a&gt; from the PDC&lt;strong&gt; and/or&lt;/strong&gt; read the &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/fluid.asp"&gt;North Face White paper&lt;/a&gt;, then you can think about this application as the generalized version. Here is a nice screenshot of the app while it is performing the Cube rotation. You can see the screens mapped to the two sides of the Cube. The right hand side screen is blurred intentionally. &lt;p&gt;  &lt;p&gt;&lt;img height=480 src="http://www.mediamax.com/pavan_podila/Hosted/MySpacesBlog/plasma.PNG" width=600&gt;  &lt;p&gt;What is exciting about this project is the integration with the Windows Workflow foundation. We use WF to describe the list of screens and transitions. The workflow itself is designed using a Visual Designer and exported as a XOML file. The app picks up the XOML and runs throught the screens/transitions as described in the workflow. The workflow side of things was done by my &lt;a href="http://dotnetaddict.dotnetdevelopersjournal.com/"&gt;colleague&lt;/a&gt;. There are lot of interesting things about WPF and WF that we learned in this project and I'll blog about them in future posts.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-7161136268153875560&amp;page=RSS%3a+Screens+and+Transitions+-+a+cool+WPF+app&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pavanpodila.spaces.live.com&amp;amp;GT1=pavanpodila"&gt;</description><comments>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!140.entry#comment</comments><guid isPermaLink="true">http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!140.entry</guid><pubDate>Fri, 08 Sep 2006 15:40:12 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pavanpodila.spaces.live.com/blog/cns!9C9E888164859398!140/comments/feed.rss</wfw:commentRss><wfw:comment>http://pavanpodila.spaces.live.com/Blog/cns!9C9E888164859398!140.entry#comment</wfw:comment><dcterms:modified>2006-09-08T15:43:45Z</dcterms:modified></item></channel></rss>