Foobar2000:Components 0.9/Graphical Browser (foo uie graphical browser)
This article is a stub. You can help the Hydrogenaudio Knowledgebase by expanding it.
foobar2000 v0.9.5.1+, Columns UI 0.3+
Requirements
Graphical Browser reference
Last version of this component is rev015. Further development for the component has ceased since, but as of foobar2000 1.1. still fully working. 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_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_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.