Microsoft Small Basic

Program Listing: NQR123-0
' Fill Parallelogram
' Copyright © 2015 Nonki Takahashi. The MIT License.
' Version 0
' Program ID: NQR123-0
param = "x=10;y=10;width=200;height=100;ratio=0.5;"
FillParallelogram()
param = "x=10;y=120;width=200;height=100;ratio=1;"
FillParallelogram()
param = "x=10;y=230;width=200;height=100;ratio=1.5;"
FillParallelogram()
Sub FillParallelogram
' param("x"), param("y") - top left position of parallelogram
' param("width"), param("height") - size of parallelogram
' param("ratio") - ratio, 0 <= ratio <= width/height
local["ratio"] = param["ratio"]
If local["ratio"] < 0 Then
local["ratio"] = 0
ElseIf param["width"] / param["height"] < local["ratio"] Then
local["ratio"] = param["width"] / param["height"]
EndIf
local["x1"] = param["x"] + param["height"] * local["ratio"]
local["y1"] = param["y"]
local["x2"] = param["x"] + param["width"]
local["y2"] = param["y"]
local["x3"] = local["x2"] - param["height"] * local["ratio"]
local["y3"] = param["y"] + param["height"]
local["x4"] = param["x"]
local["y4"] = local["y3"]
GraphicsWindow.FillTriangle(local["x1"], local["y1"], local["x2"], local["y2"], local["x3"], local["y3"])
GraphicsWindow.FillTriangle(local["x1"], local["y1"], local["x4"], local["y4"], local["x3"], local["y3"])
EndSub