Simulacrum is designed to be a slideshow viewer that extracts content from RSS feeds. The image content is extracted from each RSS item's description tag, and is displayed in the application window. The application is written with the capability for editing, removing, or hiding select feeds.
RSS has multiple meanings, either "Really Simple Syndication", or "Rich Site Summary". There are also multiple concurrent versions of RSS out there, from 0.91 to 2.0. Each format describes one 'channel' with multiple 'item's. The only way the author managed to accomodate all the concurrent versions of RSS was to extract only the common elements in the versions. That means an RSS file with the following structure:
<rss> <channel> <title>Simulacrum</title> <link>http://simulacrum.sourceforge.net</link> <description>An RSS slide show viewer.</description> <item> <title>About</title> <link>http://simulacrum.sourceforge.net/about.html</link> <description> A verbose description of the Simulacrum project. </description> </item> ... </channel> </rss>
This has multiple variations, as well. For example, the <item> tag may not be inside of the <channel> tag, and the main <rss> element may be an <rdf> element. Also, the content inside of the <description> tag (if it is truly conforming to the xml standard) is encoded with escape characters, instead of straight text or HTML.
Now that you know what an RSS feed looks like, we can discuss what the application looks for inside of the feed.
The application will look inside the feed for any <item>'s <description> tag that contains an image reference. This may look one of two ways, since the <description> tag may or may not be escaped. One possible appearance of an image tag is:
<img src="http://simulacrum.sourceforge.net/dne.jpg">
Another possible appearance for the same image could be:
<img src="http://simulacrum.sourceforge.net/dne.jpg">
And yet another:
[!CDATA[<img src="http://simulacrum.sourceforge.net/dne.jpg">]]
Or, God forbid:
<img src="http://simulacrum.sourceforge.net/dne.jpg">
Although, this last one is poorly constructed, because if you escape the '<' and '>' characters, the '"' should also be escaped.
In all the above cases, the application will extract the URL from the src="" string, and load that into an image. This is very easy to do in Java. Once the application has loaded the image, it displays the image, and proceeds to load the next image or feed.
In addition to the <description> tag, there is also a newer tag, by the name of <content:encoded>. This content tag may also have HTML embedded inside, with valid image references. This data is tagged onto the back end of the description tag, so that if there is no valid image URL in the description, the parser continues searching the <content:encoded> data.
In addition to basic slideshow controls, the application enables the toggling of the feed display, toggling of the menu bar display, toggling of each image's information, and toggling of the window frame (this feature is not available in applet mode).
To toggle the display of the feeds, select "Sources / [ ] View Feeds". This will display a list of the available feeds. While in this view, additional feed information is available by selecting "Sources / Display >". This will toggle the visibility of additional columns that contain information extracted from the RSS feed. If there was an error loading the feed, these columns will be blank, as the data could not be retrieved.
To toggle the display of the menu bar, simply press and release the right mouse button once. On Macintosh, hold down the command (squiggly) key, and press the mouse once.
To toggle the display of image information, select "Image / [ ] Image Info". This will overlay on the image the RSS <title> and <link> for the image. This link is clickable in applet mode.
If the application is running, it is possible to turn off the window frame (title bar and borders). To do so, select "Main / [x] Framed". This will cause the application window to flicker, and the title bar and borders have been removed. In order to load them again, enable the checkbox in the menu.
http://simulacrum.sourceforge.net
schnozmeiser@users.sourceforge.net