Menu

Changelog

Peter Maersk-Moller
There is a newer version of this page. You can find it here.

Changelog for Snowmix

Version 0.3.3 alpha

Version 0.3.3

  • Adding command 'command at' to introduced timed commands. While tiemd commands can be emulated by using a sufficient number of 'next', this command is much more scalable. If the time given for the command is preceeded by a '+', the time will be considered relative, otherwise absolute time is used. Absolute time is seconds since EPOCH (1. jan 1970). The command 'command at' without any other arguments will listed timed commands. When time for a time command elapses, the command will be excuted and the entry removed. The syntax of the command is:

    command at [[+]<time> <command ........>] // time =  [[hh:]mm:]nn[.nnnnn]
    
  • Adding command 'include' to include a file while reading the ini file. This command MUST NOT be used in a command loop while running frames through Snowmix as reading files can block for a short or longer period. So use it ONLY in the ini file. The syntax is:

    include <file name>
    
  • Adding command 'label'. The command 'label' can only be used inside commands created using 'command create'. They have no function, except they function as jump points for the command 'goto'. The syntax is:

    label <label name>
    
  • Adding command 'goto'. This function can only be used inside commands created using 'command create'. It pprovides an unconditional jump to label <label name="">. The syntax is:</label>

    goto <label name>
    
  • Adding command 'if', 'else', 'endif'. All 'if's must have a corresponding 'endif'. An 'if' can have a corresponding 'else'. If condition for the 'if' is true, then the commands below 'if' until 'else' (if existing) are excuted. If the condition is false, the commands below 'else' are executed. If no 'else' is present, the execution continues after the 'endif'. The conditions that can be tested on are 'feedstate(\<feed number="">,\<feed state="">)', prevstate(\<feed number="">,\<feed state="">)' and 'exist(command,\)'. Condition can be negated with '!' and combined with '&&' and '||'. <feed number=""> is a positive interger indicating the number of a real feed. The test feedstate test on current feed status while prevstate test on previous feed state. In both cases it is the state of the reel feed rather than virtual feeds. The condition exist() can be used to test whether or not a command created with 'command create' exist. The syntax is:</feed></feed></feed></feed></feed>

    if <condition>
      command
      command
      ...
    else
      command
      command
      ...
    endif
    

The syntax for condition is:

    <condition> = ['!']<cond> [('||' | '&&') <condition>]
    <cond>      = <feedstate> | <prevstate> | <exist>
    <feedstate> = feedstate(<feed no>,<feed state>) | 
    <prevstate> = prevstate(<feed no>,<feed state>) | 
    <exist>     = exist(command,<command name>);
    <feed no>   = 0....(2^32)-1
    <feed state>= 'SETUP' | 'PENDING' | 'RUNNING' | 'STALLED' | 'DISCONNECTED'
  • Reserved command 'nextframe' renamed to next. The command 'nextframe' will work for the next two releases and then be removed. A command containing the command 'next' will suspend execution of the command until called next time (which may be for the next frame, if the command is in the main command loop (included in the command given for the command 'overlay finish'. The syntax is:

    next [<frame count>]
    
  • Adding command 'command addatline'. This command can be used to add a command at a specific line in the command \. The syntax is:

    command addatline <command name> <line number> <command>
    
  • Adding command 'command deleteline'. This command deletes a specific line in a command. Commands can be listed with the command 'command list \' to identify the line to be deleted. The syntax is:

    command deleteline <command name> <line number>.
    
  • Adding command 'command push'. This command adds a \ to the end of the command \. The syntax is:

    command push <command name> <command>
    
  • Adding command 'command pop'. This command removes one or more lines in a command by popping them from the end of the command. The syntax is:

    command pop <command name> [ <count>]
    
  • The command 'command list ' listed the command lines counting from 0. Changed to counting from 1.

    • Fixing incorrect return values of command parsing in class CCommand and further
      use of this in parsing in class CController.
  • Adding command 'command delete'. The syntax is:

    command delete <command name>
    
  • Optimize for speed parsing of commands in parse_commands in class CController.

  • Optimize for speed parsing commands in class CVideoFeed.

  • Adding class CVideoFeeds and moving video feed relevant code to this class. Mostly moved from class CController.

  • Adding command option 'maxplaces video feeds' to command 'maxplaces'.

  • Adding command 'require version'. This enforces that the SNowmix version must match \<major 1="">.\<major 2=""> and that Snowmix version major1.major2.minor MUST be greater or equel to \<minor>. Adding 'require version 0.3.3' to ini files. The syntax is</minor></major></major>

    require version <major 1>.<major 2>.<minor>
    
  • Removing dead code in controller.cpp

  • Making 'maxplaces' code in controller.cpp private for class CController.

  • Adding many new entries to list_help in class CVideoText in video_text.cpp. Should have been in version 0.3.2

  • Adding module 'videorate' to all input examples in scripts directory. It is not strictly necessary, but useful if you use another video source with a different framerate.

Version 0.3.2 alpha
  • Adding command 'text font available' to list text font families available on platform. The syntax is:

    text font available
    
  • Adding commands 'text place move clip' and 'text place backgr move clip' to add animation for clipping text (alone) and clipping background (and text). The syntax for the commands are:

    text place move clip [<id no> <delta left> <delta right> <delta top>
        <delta bottom> <left steps> <right steps> <top steps> <bottom steps>]
    
    text place backgr move clip [<id no> <delta left> <delta right> <delta top>
        <delta bottom> <left steps> <right steps> <top steps> <bottom steps>]
    
  • Adding command 'text place scale'. A scale value of 1.0 means no scaling. A scale value of 0.0 means no text will be displayed.

    text place scale [<place id> <scale x> <scale y>]
    
  • Adding command 'text place move scale'. The syntax is:

    text place move scale [<place id> <delta scale x> <delta scale y> <step x> <step y>]
    
  • Adding command 'text place clip'. Full clip is '0.0 1.0 0.0 1.0'. Clipping 10% in from left, 40% from right, 20% from top and 30% from bottom must be specified as '0.1 0.6 0.2 0.7'.

    text place clip [<place id> [<clip left> <clip right> <clip top> <clip bottom>]]
    
  • Adding command 'text place backgr clip'. Clipping background and text as text. The syntax is:

    text place backgr clip [<place id> [<clip left> <clip right> <clip top> <clip bottom>]]
    
  • Adding command 'text place backgr move alpha' to add animation for changing alpha of text background. This also affect alpha of linpat. This is explained further below. The syntax is:

    text place backgr move alpha [<id no> <delta alpha_bg> <alpha_bg steps> ]
    
  • Adding command 'text place move alpha'. The commands adds ability to automatically change the alpha by adding <delta alpha=""> repeated <delta steps=""> times. Alpha is kept betwen 0.0 and 1.0. The syntax is:</delta></delta>

    text place move alpha [<place id> <delta alpha> <delta steps>]
    
  • Adding command 'text place move rotation'. The commands adds ability to automatically change the rotation by adding \<delta rotation=""> repeated \<delta steps=""> times. Rotation is kept between 2PI and -2PI. The syntax is:</delta></delta>

    text place move rotation [<place id> <delta rotation> <delta steps>]
    
  • Adding command 'text string concat' to concatenate two text strings. If destination string is empty, it is created as initially an empty string. The destination string is concatenated for all following source strings. The syntax is:

    text string concat <destination text id> <source text id> [<source text id> ...]
    
  • Various cleaning in the class CTextItem aligning output and correction of minor errors.

  • All alpha parameters for text linear pattern (linpat) background are now multiplied with the alpha value for the the text background. This way manipulating the alpha value of the text background will also affect the alpha for the linpat background.

  • Fixing loop n. Loop function for 'loop 1' was not working.

  • All text strings for 'text string \<text id=""> <some text="">' are now parsed for occurrence of '\n', '\t' and '\\' and translated to Newline, Tab and '\' (their) respective codes of course). Note that Newlines and Tabs in strings will affect layout of the string. Newlines in strings will create multi line layout and Tabs in strings will cause indentation.</some></text>

  • Splitting up video_text.h & video_text.cpp to cairo_graphic.h and cairo_graphic.cpp. Renaming class CVideoText to CCairoGraphic.

Version 0.3.1 alpha
  • Adding command 'command afterend ' to set the next command of \ to point to NULL meaning no command of \ will be executed (if it is included) until \ is restarted. The syntax is:

            command afterend <command name>
    
  • Adding command 'maxplaces' to set maximum number of strings, fonts, text places, images, image places and virtual feeds. The command should be used early in the ini files as the command has no effect after text, fonts etc. has been created. The syntax is:

    maxplaces [(strings | fonts | texts | images | imageplaces | virtual feeds) <number>]
    
  • Command 'text place move' renamed to 'text place repeat move'. This breaks earlier ini files and ini files examples has been updated. Syntax is now:

            text place repeat move [<id no> | <id no> <dx> <dy> <end x> <end y>]
    
  • Adding command 'text place grow'. Only the first <start len=""> charaters are shown. In next frame more characters are shown etc. Grow speed by (len>>4 | 0x01) by default. Syntax is:</start>

            text place grow <place id> <start len> [<delta grow>]
    
  • Adding command 'text place coor' to change the coordinates of a text placed. The syntax of the command is:

    text place coor [<place_id> <x> <y>]
    
  • Adding command 'text place move coor' to add a command that automatically moves text from one set of coordinates to another. The syntax is

    text place move coor [<place_id> <delta_x> <delta_y> <step_x> <step_y>]
    
  • Adding alpha channel for text object. Valid values for alpha is 0.0 >= alpha \<= 1.0. This breaks earlier format of ini files and ini example files has been updated. The command text place now has the syntax:

    text place [<place_id> [<text_id> <font_id> <x> <y> [<red> <green> <blue>
        [ <alpha> [ nw | ne | se | sw | n | s | e | w ]]]]]
    
  • Adding command 'text place alpha' to change the alpha of text placed. The syntax is:

    text place alpha [<place id> <alpha>]
    
  • Adding command 'text place rotation' to change the rotation of text placed. The syntax is:

    text place rotation [<place id> <rotation>]
    
  • Adding text [#RUNTIME,d] where d is a feed number and the runtime is the runtime since the feed started. [#RUNTIME] defines system running time.

  • Speeding up controller parse commands by moving parsing of 'text' commands and supporting functions to video_text module (class CVideoText)

  • Speeding up controller parse commands by moving parsing of 'command' commands and supporting functions to command module (class CCommand).

  • Changing command 'help text', 'help virtual feed' and 'help command' into 'text help', 'virtual feed help' and 'command help' as well as moving respective help listing to the class CVideoText, class CVirtualFeed and class CCommand.

  • Adding means to delete earlier created linear pattern (linpat) for background of text placed using the command listed below:

            text place backgr linpat <place_id>
    
Version 0.3.0 alpha
  • First public release