Foobar2000:Components 0.9/Graphical Browser (foo uie graphical browser)

From Hydrogenaudio Knowledgebase
Foobar2000_Logo.png

foobar2000 v0.9.5.1+, Columns UI 0.3+

Requirements

Graphical Browser reference

This reference is based on the Readme translated by thuan (rev014).

Description

Album cover browser for the active playlist.

Remarks

Caution: Settings are per panel so if you delete a panel, the settings for that panel also disappear.

Sort

Blank Whatever works. Sorted by grouped strings.

If you want to arrange in the same order as the playlist: $num(%gb_playlist_number%,10)

Popup

Transparent mode: You can apply different level of transparence to every pixel. (e.g.: transparent background with full opacity image and text.) GDI can't be used, please use GDI+ only. Even with GDI+, text rendering without using $gp_set_text_rendering_hint(aa) doesn't look good enough. Per track

Draw order: Popup ? Per track(0) ? Per track(1) ? ...

Rendering settings (e.g.: pen, brush, font, ...) can't be set again midway.

Image cache methods

Old rev011 and older way. Cache images of all items. Image cache is purged when switching playlist. Default Cache images to the set size. Image cache is not purged when switching playlist. If the image cache reach the limit, it will be purged.

Variables

%gb_group%

[Item], [Popup], [Per track(Popup)]

Return the group string. E.g.: If you used $if2(%album%,@skip) to group, it will return %album%.

%gb_width%

[Item]

Item width

[Popup], [Per track(Popup)]

Popup width

%gb_height%

[Item]

Item height

[Popup], [Per track(Popup)]

Popup height

%gb_focused%

[Item], [Popup], [Per track(Popup)]

Check whether focus is on the item or not

%gb_mouse_over%

[Item]

Check whether mouse cursor is on the item or not

[Popup], [Per track(Popup)]

Probably always true

%gb_item_index%

[Item], [Popup], [Per track(Popup)]

Return item index

%gb_item_count%

[Item], [Popup], [Per track(Popup)]

Return item count

%gb_track_count%

[Sort], [Item], [Popup], [Per track(Popup)]

Return number of songs in an item

%gb_playlist_number%

[Sort], [Item], [Popup]

Return position of song in playlist for the first song in an item

[Per track(Popup)]

Return position of song in playlist

%gb_col%

[Item], [Popup], [Per track(Popup)]

Return item column number

%gb_row%

[Item], [Popup], [Per track(Popup)]

Return item row number

%gb_col_count%

[Item], [Popup], [Per track(Popup)]

Return number of columns

%gb_row_count%

[Item], [Popup], [Per track(Popup)]

Return number of rows

%gb_isplaying%

[Item], [Popup]

Return true if a song in the item is playing

[Per track (Popup)]

Return true if it is playing

%gb_track_index%

[Per track (Popup)]

Position of track in item (O based)

%gb_length%

[Sort], [Item], [Popup], [Per track(Popup)]

Total length of item/track

%gb_length_seconds%

[Sort], [Item], [Popup], [Per track(Popup)]

Total length in seconds of item/track

Dimension calculations

  • %gb_calc_x%
  • %gb_calc_y%
  • %gb_calc_width%
  • %gb_calc_height%

[Item], [Popup], [Per track(Popup)]

Values change with functions below

  • $calc_text
  • $gp_calc_string
  • $gp_calc_string_path
  • $draw_image

About functions

Functions are divided into GDI and GDI+. They are different in pens, brushes and points. For GDI, to set color with "r-g-b", use a base 10 number for each color component; otherwise use base 16 number with "rrggbb". For GDI+, to set color with "a-r-g-b", se a base 10 number for each color component and alpha channel; otherwise use base 16 number with "aarrggbb". If you want to draw some thing with transparency or effects like anti-aliasing, use GDI+. Some fonts (probably OpenType fonts with PostScript outline) can't be used in GDI+ mode. Full-width hyphen can't be displayed right in GDI+ mode.

GDI function

$set_font(name,size,style)

Set font

  • name - font name
  • size - font size
  • style - style

Set multiple styles by combining options

  • "b" - bold
  • "i" - italic
  • "u" - underline
  • "s" - strikethrough

$set_font_color(color)

Set font color

color - color

$draw_text(str,x,y)

Draw text

  • str - string
  • x - start point x coordinate
  • y - start point y coordinate

$draw_text(str,x,y,width,height,[option1],[option2],...)

Draw text within the set limit

  • str - string
  • x - start point x coordinate
  • y - start point y coordinate
  • width - drawing width
  • height - drawing height
  • option - other option
    • "bottom" - draw at bottom, needs singleline
    • "center" - center aligned
    • "end_ellipsis" - if out of limit, append "...."
    • "left" - left aligned
    • "noclip" - no clip, same as no settings for width and height
    • "path_ellipsis" – like end_ellipsis but used for file path
    • "right" – right aligned
    • "singleline" - display with 1 line
    • "top" - draw at top
    • "vcenter" - vertical center aligned, needs singleline
    • "wordbreak" - display with multiple lines
    • "word_ellipsis" - truncates any word that does not fit in the rectangle and adds ellipsis.

Details at http://msdn2.microsoft.com/en-us/library/ms533909.aspx

$calc_text(str)

$calc_text(str,width,height,[option1],[option2],...)

Calculate size of str when drawn.

Arguments are the same as $draw_text except x and y.

Use %gb_calc_*% to obtain values after this function.

$set_pen(color)

$set_pen(color,width) $set_pen(color,width,style)

Pen settings

  • color - color
  • width - width[1], only effective when using "solid" style
  • style - style["solid"]
    • "solid" - solid line
    • "dash" - dashed line
    • "dot" - dotted line
    • "dashdot" - line with alternating dashes and dots
    • "dashdotdot" - line with alternating dashes and double dots

Details at http://msdn2.microsoft.com/en-us/library/m...467(VS.85).aspx

$set_brush(color)

$set_brush(color,style)

Brush settings

  • color - color
  • style - style: if it is not set, then brush is solid
    • "bdiagonal" - A 45-degree upward, left-to-right line pattern
    • "cross" - Horizontal and vertical cross pattern
    • "diagcross" - 45-degree cross pattern
    • "fdiagonal" - A 45-degree downward, left-to-right line pattern
    • "horizontal" - Horizontal line pattern
    • "vertical" - Vertical line pattern

$draw_rect(x,y,width,height)

Draw rectangle using pen

  • x - start point x coordinate
  • y - start point y coordinate
  • width - width
  • height - height

$fill_rect(x,y,width,height)

Fill rectangle using brush

  • x - start point x coordinate
  • y - start point y coordinate
  • width - width
  • height - height

$fill_draw_rect(x,y,width,height)

Draw rectangle using pen and brush

  • x - start point x coordinate
  • y - start point y coordinate
  • width - width
  • height - height

$round_rect(x,y,width,height,ellipse_width,ellipse_height)

Draw round corner rectangle with pen and brush

  • x - start point x coordinate
  • y - start point y coordinate
  • width - width
  • height - height
  • ellipse_width - ellipse width
  • ellipse_height - ellipse height

$draw_line(x1,y1,x2,y2)

Draw line using pen, end point is not drawn.

  • x1 - start point x coordinate
  • y1 - start point y coordinate
  • x2 - end point x coordinate
  • y2 - end point y coordinate

GDI+ function

Because pen, brush, font do not have default values, please set them up with $gp_set_* before using.

$gp_set_pen(argb,width)

$gp_set_pen(argb,width,style,line_join)

Pen settings

Arguments:

  • argb - color
  • width - width
  • style - style ["solid"]
    • "solid" - solid line
    • "dash" - dashed line
    • "dot" - dotted line
    • "dashdot" - line with alternating dashes and dots
    • "dashdotdot" - line with alternating dashes and double dots
    • line_join - stroke corner style ["miter"]
    • "miter"
    • "bevel"
    • "round"

$gp_set_brush(argb)

Monocolor brush setting

Arguments: argb - color

$gp_set_brush(style,argb1,argb2)

Hatch brush settings Argument:

  • style - Style
  • Use number in range 0 ~ 53.

Details at http://msdn2.microsoft.com/en-us/library/ms534127.aspx

  • argb1 - Foreground color.
  • argb2 - Background color.

$gp_set_brush(argb1,x1,y1,argb2,x2,y2)

Set brush with linear gradual effect

Arguments:

  • argb1 - color 1
  • x1 - color 1 x coordinate
  • y1 - color 1 y coordinate
  • argb2 - color 2
  • x2 - color 2 x coordinate
  • y2 - color 2 y coordinate

$gp_set_font(name,size)

$gp_set_font(name,size,style_1,style_2...)

Font settings

Arguments:

  • name - font name
  • size - font size
  • style - style
  • "b" - bold
  • "i" - italic
  • "bi" - bold and italic
  • "u" - underline
  • "s" - strikethrough

$gp_set_string_format(alignment,line_alignment,[trimming])

Text drawing method settings

Arguments:

  • alignment - horizontal alignment
    • "near" - left
    • "center" - center
    • "far" - right
  • line_alignment - vertical alignment
    • "near" - top
    • "center" - center
    • "far" - bottom
  • trimming - Trimming.
    • "character"
    • "word"
    • "ellipsis_character"
    • "ellipsis_word"
    • "ellipsis_path"

$gp_set_smoothing_mode(antialias)

Shape anti-alias setting

Arguments:

  • antialias - anti-alias
  • 0 - disable
  • 1 - enable

$gp_set_text_rendering_hint(mode)

Text rendering method setting

Arguments:

  • mode - method
  • "default" - default
  • "sb+" - single bit per pixel grid fit
  • "sb" - single bit per pixel
  • "aa+" - anti alias grid fit
  • "aa" - anti alias
  • "ct" - clear type

$gp_draw_arc(x,y,width,height,start_angle,sweep_angle)

Draw arc using pen

Arguments:

  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height
  • start_angle - start angle (degree)
  • sweep_angle - end angle (degree)

Settings:

$gp_draw_ellipse(x,y,width,height)

Draw ellipse using pen

Arguments:

  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height

Settings:

$gp_draw_line(x1,y1,x2,y2)

Draw line using pen

Arguments:

  • x1 - start point x coordinate
  • y1 - start point y coordinate
  • x2 - end point x coordinate
  • y2 - end point y coordinate

Settings:

$gp_draw_pie(x,y,width,height,start_angle,sweep_angle)

Draw pie (fan shape) using pen

Arguments:

  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height
  • start_angle - start angle (degree)
  • sweep_angle - end angle (degree)

Settings:

$gp_draw_rectangle(x,y,width,height)

Draw rectangle using pen

Arguments:

  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height

Settings:

$gp_draw_string(str,x,y)

$gp_draw_string(str,x,y,width,height) Draw string using brush

Arguments:

  • str - string
  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height

Settings:

  • $gp_set_font
  • $gp_set_brush
  • $gp_set_text_rendering_hint
  • $gp_set_string_format

$gp_calc_string(str)

$gp_calc_string(str,width,height)

Calculate size of str when drawn

$gp_fill_ellipse(x,y,width,height)

Fill ellipse using brush

Arguments:

  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height

Settings:

$gp_fill_pie(x,y,width,height,start_angle,sweep_angle)

Fill pie using brush

Arguments:

  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height
  • start_angle - start angle (degree)
  • sweep_angle - end angle (degree)

Settings:

  • $gp_set_brush
  • $gp_set_smoothing_mode

$gp_fill_rectangle(x,y,width,height)

Fill rectangle using brush

Arguments:

  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height

Settings:

  • $gp_set_brush
  • $gp_set_smoothing_mode


$gp_draw_string_path(str,size,mode,x,y)

$gp_draw_string_path(str,size,mode,x,y,width,height)

Draw string with border.

Arguments:

  • str - string
  • size - character size, px unit (different from current font size)
  • mode - draw mode
  • "" - fill and border
  • "stroke" - only border
  • "fill" - only fill
  • x - top left x coordinate
  • y - top left y coordinate
  • width - width
  • height - height

Settings:

  • $gp_set_pen
  • $gp_set_brush
  • $gp_set_font
  • $gp_set_string_format
  • $gp_set_smoothing_mode

Examples:

  • $gp_set_font(Tahoma,9,b)
  • $gp_set_pen(ff1500ff,2,,round)
  • $gp_set_brush(ffddeeff)
  • $gp_set_string_format(center,center)
  • $gp_set_smoothing_mode(1)
  • $gp_draw_string_path(%gb_group%,16,,0,0,%gb_width%,%gb_height%)

$gp_calc_string_path(str,size,mode)

$gp_calc_string_path(str,size,mode,width,height)

Calculate size of str with border when drawn

$draw_image(x,y,width,height,path)

$draw_image(x,y,width,height,path,alpha)

$draw_image(x,y,width,height,path,alpha,option)

$draw_image(x,y,width,height,path,alpha,option,rotate_flip)

Draw image function

Arguments:

  • x - starting point x coordinate
  • y - starting point y coordinate
  • width - width
  • height - height
  • path - absolute path to image, wild cards are accepted.
  • alpha - degree of opacity[255]
  • option - other options[""]
  • "nokeepaspect" - don't keep picture aspect ratio
  • "top" - draw at the top
  • "topright" - draw on the top right
  • "right" - draw from the right
  • "bottomright" - draw on the bottom right
  • "bottom" - draw at the bottom
  • "bottomleft" - draw on the bottom left
  • "left" - draw from the left
  • "topleft" - draw on the top left
  • rotate_flip - Rotation and flip [0]
    • 0 - No rotation = Rotate right 180 degrees, flip vertically then horizontally
    • 1 - Rotate right 90 degrees = Rotate right 270 degrees, flip vertically then horizontally
    • 2 - Rotate right 180 degrees = Flip vertically then horizontally
    • 3 - Rotate right 270 degrees = Rotate right 90 degrees, flip vertically then horizontally
    • 4 - Flip horizontally = Rotate right 180 degrees, flip vertically
    • 5 - Rotate right 90 degrees, flip horizontally = Rotate right 270 degrees, flip vertically
    • 6 - Rotate right 180 degrees, flip horizontally = Flip vertically
    • 7 - Rotate right 270 degrees, flip horizontally = Rotate right 90 degrees, flip vertically

After executing this function, you can use %gb_calc_*% to obtain the real dimensions used.

Other functions

$set_size(width,height)

Modify popup size, please use it only when drawing the popup. Popup size is the upper limits, you can only set to smaller sizes. %gb_width%, %gb_height% values are changed accordingly.

When width or height is 0 or less, popup won't be drawn.

Arguments:

  • width - width
  • height - height

$set_org(x,y)

Starting point setting

Arguments:

  • x - starting point x coordinate
  • y - starting point y coordinate

$sum(tf)

Calculate sum of values designated by TitleFormat.

Arguments:

  • tf - TitleFormat

Example: Total number played

  • $sum('%play_count%')

$eval(expression)

Evaluate the expression and calculate

expression - expression

Examples:

  • $eval(5+3)
  • $eval({%gp_width%-10}/2)

Divide by zero expression returns 0.

Can be used with sort

Change logs

2008/03/16 rev014

Added - $set_size function
Added - %gb_calc_x% variable
Added - %gb_calc_y% variable
Added - %gb_calc_width% variable
Added - %gb_calc_height% variable
Added - $calc_text function
Added - $gp_calc_string function
Added - $gp_calc_string_path function
Fixed - $draw_image function
Fixed - $gp_set_string_format function(trimming argument) (however, they can always be used before, just forgot to write here…
Fixed - Several bugs fixed

2008/03/12 rev013

Fixed - Fixed the slip happens sometimes when using keyboard to jump from item to item
Fixed - When drawing in GDI mode, fixed a drawing background bug

2008/03/11 rev012

Fixed - Fatal resource leak
Added - Image cache options

2008/03/10 rev011

Added - Ability to move focus to an item when pressing the first character of %gb_group% using keyboard
Added - Ability to add to specified playlist instead of replacing it
Fixed - Fixed a bug that prevents you to scroll in Windows 2000 (probably...)
(TL's note: not sure about the last one, the meaning is a little vague and I don't have  Windows 2000 to test)

2008/03/09 rev010

Fixed - For some reason, I changed the variable name %gb_subitem_count% to %gb_track_count% (the one before can still be used)
Added - Function $gp_set_brush(style,argb1,argb2)
Added - Function $set_org(x,y)
Added - Popup display transparent mode
Added - Popup delay setting
Added - Function $sum(tf)
Added - Variable %gb_isplaying%
Added - Variable %gb_track_index%
Added - Variable %gb_length%
Added - Variable %gb_length_seconds%

2008/03/02 rev009

Fixed - Fixed the bug that causes rotateflip does nothing
Fixed - Fixed behavior when there's no scroll bar
Added - Added mouse over popup.

2008/03/02 rev008

Fixed - Fixed bug that prevent the use of wild cards in $draw_image function

2008/03/02 rev007

Added - Ability to [always show|if necessary show|hide] scroll bar
Fixed - $set_font function (style)
Fixed - $draw_image function (rotate_flip)
Added - Middle mouse button action
Added - Ability to send to specified playlist
Older change logs omitted.

External links