Инструменты пользователя

Инструменты сайта


foobar2000:manual:gb_tutorial

Manual for Graphical Browser (rev15)

foo_uie_graphical_browser.dll (2008/04/20 rev015)

What this component does:

Album cover browser for the active playlist.

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)

Transparent mode

You can apply different level of transparence to every pixel. (e.g.: transparent background with full opacity image and text.)
I think that 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

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

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

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",
use 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
$draw_text_blur(str,x,y,strength,[deep])
$draw_text_blur(str,x,y,width,height,strength,[deep],[option1],[option2],...)
	0 Overview
		Draw blurred text.
	0 Arguments
		str - string
		x - start point x coordinate
		y - start point y coordinate
		strength - Blur strength (1..20)
		deep - enable [1]
		option - see $draw_text
$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)
	0 Overview:
	Pen settings
	0 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)
	0 Overview:
		Monocolor brush setting
	0 Arguments:
		argb - color
$gp_set_brush(style,argb1,argb2)
	0 Overview:
		Hatch brush settings
	0 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)
	0 Overview:
		Set brush with linear gradual effect
	0 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...)
	0 Overview:
		Font settings
	0 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])
	0 Overview:
		Text drawing method settings
	0 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)
	0 Overview:
		Shape anti-alias setting
	0 Arguments:
		antialias - anti-alias
			0 - disable
			1 - enable
$gp_set_text_rendering_hint(mode)
	0 Overview:		
		Text rendering method setting
	0 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)
	0 Overview:		
		Draw arc using pen
	0 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)
	0 Settings:
		$gp_set_pen
		$gp_set_smoothing_mode
$gp_draw_ellipse(x,y,width,height)
	0 Overview:	
		Draw ellipse using pen
	0 Arguments:
		x - top left x coordinate
		y - top left y coordinate
		width - width
		height - height
	0 Settings:
		$gp_set_pen
		$gp_set_smoothing_mode		
$gp_draw_line(x1,y1,x2,y2)
	0 Overview:	
		Draw line using pen
	0 Arguments:
		x1 - start point x coordinate
		y1 - start point y coordinate
		x2 - end point x coordinate
		y2 - end point y coordinate
	0 Settings:
		$gp_set_pen
		$gp_set_smoothing_mode
$gp_draw_pie(x,y,width,height,start_angle,sweep_angle)
	0 Overview:	
		Draw pie (fan shape) using pen
	0 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)
	0 Settings:
		$gp_set_pen
		$gp_set_smoothing_mode
		
$gp_draw_rectangle(x,y,width,height)
	0 Overview:
		Draw rectangle using pen
	0 Arguments:
		x - top left x coordinate
		y - top left y coordinate
		width - width
		height - height
	0 Settings:
		$gp_set_pen
		$gp_set_smoothing_mode
$gp_draw_string(str,x,y)
$gp_draw_string(str,x,y,width,height)
	0 Overview:
		Draw string using brush
	0 Arguments:
		str - string
		x - top left x coordinate
		y - top left y coordinate
		width - width
		height - height
	0 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)
	0 Overview
		Calculate size of str when drawn
$gp_fill_ellipse(x,y,width,height)
	0 Overview:
		Fill ellipse using brush
	0 Arguments:
		x - top left x coordinate
		y - top left y coordinate
		width - width
		height - height
	0 Settings:
		$gp_set_brush
		$gp_set_smoothing_mode
$gp_fill_pie(x,y,width,height,start_angle,sweep_angle)
	0 Overview:		
		Fill pie using brush
	0 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)
	0 Settings:
		$gp_set_brush
		$gp_set_smoothing_mode
$gp_fill_rectangle(x,y,width,height)
	0 Overview:	
		Fill rectangle using brush
	0 Arguments:
		x - top left x coordinate
		y - top left y coordinate
		width - width
		height - height
	0 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)
	0 Overview:
		Draw string with border.
	0 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
	0 Settings:
		$gp_set_pen
		$gp_set_brush
		$gp_set_font
		$gp_set_string_format
		$gp_set_smoothing_mode
	0 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)
	0 Overview
		Calculate size of str with border when drawn

Draw image function

$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)
	0 Overview:
		Draw image
	0 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
	0 Reference
		After executing this function, you can use
		%gb_calc_*% to obtain the real dimensions used.

Other functions

$set_size(width,height)
	0 Overview
		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.
	0 Arguments:
		width - width
		height - height
$set_org(x,y)
	0 Overview
		Starting point setting
	0 Arguments:
		x - starting point x coordinate
		y - starting point y coordinate
$set_clip_rect()
$set_clip_rect(x,y,width,height)
	0 Overview
		Only draw GDI, GDI+, and pictures inside the designated area.
		Cancel this function effect by calling it with no argument.
$sum(tf)
	0 Overview
		Calculate sum of values designated by TitleFormat.
	0 Arguments:
		tf - TitleFormat
	0 Example: Total number played
		$sum('%play_count%')
$eval(expression)
	Evaluate the expression and calculate
	expression - expression
		E.g.: $eval(5+3)
		E.g.: $eval({%gp_width%-10}/2)
	? Divide by zero expression returns 0.
	Can be used with sort
foobar2000/manual/gb_tutorial.txt · Последние изменения: 2012/07/04 01:50 — Izotop