News archive

12/05/2015

JPEG Saver 4.14

JPEG Saver 4.14 doesn't contain anything truly amazing, but it does have a new item for adding to the display: an analog clock. I first played with an analog clock item back in 2010, drawing the hands as Direct3D meshes. It worked, but it looked awful so I shelved the code. The analog clock in version 4.14 works the same way that the text clock does - drawing to an off-screen bitmap and then pasting it on top. It looks a lot better and makes it easier to preview the clock in the item configuration dialog.

I thought about adding a shadow option to the analog clock, but then I realised it was already easy enough to do using JPEG Saver's items list. Set up your clock the way you want it to look then create a copy, set the colour of the copy to grey (or whatever colour you want the shadow to be), change the offset by a few pixels and then drag the copy above the original clock in the items list. Items are drawn in the order they appear in the list, so the shadow should be above the main clock to be drawn first.

This version also adds some extra format tokens for the “Image info” item, for displaying some properties that can be updated in Windows Explorer. These are the title, subject, keywords (or tags), comments and author. The properties are actually stored in the Exif metadata, but are not part of the Exif standard (which is why I hadn't thought to include them before).

Read more . . .

07/04/2015

SVGGraph 2.18

In previous versions of SVGGraph there were labels for some bars and labels for pie slices, but that was about it. They used different code, had different option names, and supported different styles and things. Version 2.18 attempts to bring the labels together, support labelling all the data items, and provide more options for what the labels look like.

Not a pipe organ

This example StackedBarGraph shows some of the new features. The labels are displayed using a data_label_type of “bubble”, with the data_label_filter option used to only create 1 in 3 labels for the second dataset and all labels for the first. What do you mean, you can't see the labels for the first dataset?

You can't see the labels for the first dataset because the data_label_fade_in_speed and data_label_fade_out_speed are both set to allow the labels to fade in and out, and the data_label_click option is set to array('hide','show'). This hides the labels of the first dataset and shows the labels of the second from the start, but they are all still there.

Read more . . .

11/02/2015

TagCanvas 2.6.1

TagCanvas 2.6.1 is another quick bug-fix release, just fixing one bug that could be quite annoying. The new canvas tooltip supported by version 2.6 would display its div at the end of the page when TagCanvas started up. This version fixes that, and nothing else. So if you are not using div-based tooltips, this new version should not act any differently to version 2.6.

In other news, I've had a growing number of people contacting me about problems with using TagCanvas on the Android browser. There appear to be quite a few issues with using an HTML5 canvas on the Android browser, with all sorts of workarounds that may or may not solve the problems: Google search for “android browser canvas problems”.

I don't have anything that will run the Android browser, so I haven't made any attempt to solve these problems in the TagCanvas script. My advice for now is to search the web for similar Android canvas bugs and see if there are any changes that you can make to your HTML or CSS that will fix things for your application.

Read more . . .

27/01/2015

TagCanvas 2.6

TagCanvas 2.6 really only adds one new feature, with a few options to go with it. The example cloud below shows the new mixed text and image tags in action.

The first new option is imageMode and determines how TagCanvas deals with text and images found in the links it uses to create the tags. The default behaviour is to act the way it always used to do, displaying an image if there is one, or the link text otherwise. The imageMode option allows you to choose to only display images (imageMode = 'image'), only display text (imageMode = 'text'), or display text and images on a single tag (imageMode = 'both'). The default fallback option is used when imageMode is null.

The imagePosition option specifies where the image goes in relation to the text, and imagePadding is the amount of space between the image and the text. For positioning the text and image within the bounding box of the tag, there are imageAlign, imageVAlign, textAlign and textVAlign options. Apart from textAlign, these options are only useful when mixed image and text tags are in use.

Read more . . .

27/11/2014

SVGGraph 2.17

Quite often changes happen to SVGGraph, or any of the software I release, due to requests from users. Sometimes users send me code that they have used to improve the software themselves - version 2.17 of SVGGraph includes both of these types of update.

The most obvious change in this version is the addition of a load of new functions for setting the colours used to draw the different bars or pie slices. I've been unhappy with the way SVGGraph deals with colour selection for quite a long time, but I haven't done anything about it until now because it worked well enough. Recently someone sent me through some code that added support for using a range of colours, and I liked it enough to incorporate it into the system. It meant overhauling the way that colours are picked, and it also gave me the chance to add a function for setting different colours for each dataset on a multi-dataset graph. This example shows two different colour ranges on one stacked bar graph.

The old $graph->Colours() function still works the same way, and setting $graph->colours directly still works too. Setting individual bar colours using structured data will still override any colour settings as well. The new colour functions are listed on the functions page, and are demonstrated on the colours, gradients and patterns page.

Read more . . .

« Previous old newsNext old news »

This site uses cookies - details here.