diff options
| -rw-r--r-- | API.md | 4 | ||||
| -rw-r--r-- | init.lua | 17 | 
2 files changed, 17 insertions, 4 deletions
| @@ -468,7 +468,7 @@ beginning with `doc_widget_text` to avoid naming collisions, as this function  makes use of such identifiers internally. -### `doc.widgets.gallery(imagedata, playername, x, y, aspect_ratio, width, rows)` +### `doc.widgets.gallery(imagedata, playername, x, y, aspect_ratio, width, rows, align_left, align_top)`  This function creates an image gallery which allows you to display an  arbitrary amount of images aligned horizontally. It is possible to add more  images than the space of an entry would normally held, this is done by adding @@ -499,6 +499,8 @@ adding more galleries is not supported and will lead to bugs.  * `aspect_ratio`: Aspect ratio of all the images (width/height)  * `width`: Total gallery width in formspec units (optional)  * `rows`: Number of images which can be seen at once (optional) +* `align_left`: If `false`, gallery is aligned to the left instead of the right (optional) +* `align_right`: If `false`, gallery is aligned to the bottom instead of the top (optional)  The default values for the optional parameters result in a gallery with  3 rows which is placed at the top left corner and spans the width of the @@ -487,7 +487,7 @@ doc.entry_builders.text_and_gallery = function(data, playername)  	-- Only add the gallery if images are in the data, otherwise, the text widget gets all of the space  	if data.images ~= nil then  		local gallery -		gallery, stolen_height = doc.widgets.gallery(data.images, playername) +		gallery, stolen_height = doc.widgets.gallery(data.images, playername, nil, nil, nil, nil, nil, nil, false)  		formstring = formstring .. gallery  	end  	formstring = formstring .. doc.widgets.text(data.text, @@ -532,7 +532,7 @@ end  -- Image gallery  -- Currently, only one gallery per entry is supported. TODO: Add support for multiple galleries in an entry (low priority) -doc.widgets.gallery = function(imagedata, playername, x, y, aspect_ratio, width, rows) +doc.widgets.gallery = function(imagedata, playername, x, y, aspect_ratio, width, rows, align_left, align_top)  	if playername == nil then return nil end -- emergency exit  	local formstring = "" @@ -543,6 +543,10 @@ doc.widgets.gallery = function(imagedata, playername, x, y, aspect_ratio, width,  	if width == nil then width = doc.FORMSPEC.ENTRY_WIDTH end  	if rows == nil then rows = 3 end +	if align_left == false then +		x = x - width +	end +  	local imageindex = doc.data.players[playername].galidx  	doc.data.players[playername].maxgalidx = #imagedata  	doc.data.players[playername].galrows = rows @@ -556,9 +560,13 @@ doc.widgets.gallery = function(imagedata, playername, x, y, aspect_ratio, width,  		totalimagewidth = width - bw*2  		iw = totalimagewidth / rows  		ih = iw * aspect_ratio +		if align_top == false then +			y = y - ih +		end + +		local tt  		if imageindex > 1 then  			formstring = formstring .. "button["..x..","..y..";"..bw..","..ih..";doc_button_gallery_prev;"..F("<").."]" -			local tt  			if rows == 1 then  				tt = F("Show previous image")  			else @@ -581,6 +589,9 @@ doc.widgets.gallery = function(imagedata, playername, x, y, aspect_ratio, width,  		totalimagewidth = width  		iw = totalimagewidth / rows  		ih = iw * aspect_ratio +		if align_top == false then +			y = y - ih +		end  	end  	for i=imageindex, math.min(#imagedata, (imageindex-1)+rows) do  		xoffset = buttonoffset + (x + pos * iw) | 
