### 概要

```mesh = gradientMesh( direction, color1, color2, ... )
```

### 引数

`string direction`
グラデーションの方向 (horizontal または vertical)。
`table color1`

`table color2`

`table ...`

### 返値

`Mesh mesh`

### ソース

```-- 色の乗算
local COLOR_MUL = love._version >= "11.0" and 1 or 255

-- 方向の判定
local isHorizontal = true
if dir == "vertical" then
isHorizontal = false
elseif dir ~= "horizontal" then
end

-- 色の判定
local colorLen = select("#", ...)
if colorLen < 2 then
error("color list is less than two", 2)
end

-- メッシュの生成
local meshData = {}
if isHorizontal then
for i = 1, colorLen do
local color = select(i, ...)
local x = (i - 1) / (colorLen - 1)

meshData[#meshData + 1] = {x, 1, x, 1, color[1], color[2], color[3], color[4] or (1 * COLOR_MUL)}
meshData[#meshData + 1] = {x, 0, x, 0, color[1], color[2], color[3], color[4] or (1 * COLOR_MUL)}
end
else
for i = 1, colorLen do
local color = select(i, ...)
local y = (i - 1) / (colorLen - 1)

meshData[#meshData + 1] = {1, y, 1, y, color[1], color[2], color[3], color[4] or (1 * COLOR_MUL)}
meshData[#meshData + 1] = {0, y, 0, y, color[1], color[2], color[3], color[4] or (1 * COLOR_MUL)}
end
end

-- 1x1 の画像寸法から成るメッシュを返します
return love.graphics.newMesh(meshData, "strip", "static")
end
```

### 概要

```gradient {color1, color2, color3, ..., direction = 'horizontal' or 'vertical'}
```

### ソース

```function gradient(colors)
local direction = colors.direction or "horizontal"
if direction == "horizontal" then
direction = true
elseif direction == "vertical" then
direction = false
else
error("Invalid direction '" .. tostring(direction) .. "' for gradient.  Horizontal or vertical expected.")
end
local result = love.image.newImageData(direction and 1 or #colors, direction and #colors or 1)
for i, color in ipairs(colors) do
local x, y
if direction then
x, y = 0, i - 1
else
x, y = i - 1, 0
end
result:setPixel(x, y, color[1], color[2], color[3], color[4] or 255)
end
result = love.graphics.newImage(result)
result:setFilter('linear', 'linear')
return result
end
```

## drawinrect

### 概要

```drawinrect(img, x, y, w, h, r, ox, oy, kx, ky)
```

### ソース

```function drawinrect(img, x, y, w, h, r, ox, oy, kx, ky)
return -- 効率的にするためのちょっとした付け足しのための末尾の呼び出し。
love.graphics.draw(img, x, y, r, w / img:getWidth(), h / img:getHeight(), ox, oy, kx, ky)
end
```

## 用例

### drawing horizontal rainbow that fills the entire screen using Mesh variant

```-- assume you already have gradientMesh function
local rainbow

{255, 0, 0};
{255, 255, 0};
{0, 255, 0};
{0, 255, 255};
{0, 0, 255};
{255, 0, 0};
)
end

function love.draw()
love.graphics.draw(rainbow, 0, 0, 0, love.graphics.getDimensions())
end
```

### 画面中央に 100 x 100 ピクセルの水平方向の虹 (すなわち、上部は赤であり、下部は紫) を描画します。

```require "gradient"

direction = 'horizontal';
{255, 0, 0};
{255, 255, 0};
{0, 255, 0};
{0, 255, 255};
{0, 0, 255};
{255, 0, 0};
}

function love.draw()
drawinrect(rainbow, love.graphics.getWidth() / 2 - 50, love.graphics.getHeight() / 2 - 50, 100)
end
```

### 画面全体を塗りつぶす垂直方向の白黒領域 (すなわち、左部は黒であり、右部は白) を描画します。

```require "gradient"