def gen_step_gradation(width=1024, height=128, step_num=17, bit_depth=10, color=(1.0, 1.0, 1.0), direction='h', debug=False):
    "\n    # 概要\n    階段状に変化するグラデーションパターンを作る。\n    なお、引数の調整により正確に1階調ずつ変化するパターンも作成可能。\n\n    # 注意事項\n    正確に1階調ずつ変化するグラデーションを作る場合は\n    ```step_num = (2 ** bit_depth) + 1```\n    となるようにパラメータを指定すること。具体例は以下のExample参照。\n\n    # Example\n    ```\n    grad_8 = gen_step_gradation(width=grad_width, height=grad_height,\n                                step_num=257, bit_depth=8,\n                                color=(1.0, 1.0, 1.0), direction='h')\n\n    grad_10 = gen_step_gradation(width=grad_width, height=grad_height,\n                                 step_num=1025, bit_depth=10,\n                                 color=(1.0, 1.0, 1.0), direction='h')\n    ```\n    "
    max = (2 ** bit_depth)
    if (direction == 'h'):
        pass
    else:
        temp = height
        height = width
        width = temp
    if ((max + 1) != step_num):
        '\n        1階調ずつの増加では無いパターン。\n        末尾のデータが 256 や 1024 になるため -1 する。\n        '
        val_list = np.linspace(0, max, step_num)
        val_list[(- 1)] -= 1
    else:
        '\n        正確に1階調ずつ変化するパターン。\n        末尾のデータが 256 や 1024 になるため除外する。\n        '
        val_list = np.linspace(0, max, step_num)[0:(- 1)]
        step_num -= 1
        diff = (val_list[1:] - val_list[0:(- 1)])
        if (diff == 1).all():
            pass
        else:
            raise ValueError('calculated value is invalid.')
    step_length_list = equal_devision(width, step_num)
    step_bar_list = []
    for (step_idx, length) in enumerate(step_length_list):
        step = [((np.ones(length) * color[c_idx]) * val_list[step_idx]) for c_idx in range(3)]
        if (direction == 'h'):
            step = np.dstack(step)
            step_bar_list.append(step)
            step_bar = np.hstack(step_bar_list)
        else:
            step = np.dstack(step).reshape((length, 1, 3))
            step_bar_list.append(step)
            step_bar = np.vstack(step_bar_list)
    if (direction == 'h'):
        img = (step_bar * np.ones((height, 1, 3)))
    else:
        img = (step_bar * np.ones((1, height, 3)))
    if debug:
        preview_image(img, 'rgb')
    return img
# 概要
階段状に変化するグラデーションパターンを作る。
なお、引数の調整により正確に1階調ずつ変化するパターンも作成可能。

# 注意事項
正確に1階調ずつ変化するグラデーションを作る場合は
```step_num = (2 ** bit_depth) + 1```
となるようにパラメータを指定すること。具体例は以下のExample参照。

# Example
```
grad_8 = gen_step_gradation(width=grad_width, height=grad_height,
                            step_num=257, bit_depth=8,
                            color=(1.0, 1.0, 1.0), direction='h')

grad_10 = gen_step_gradation(width=grad_width, height=grad_height,
                             step_num=1025, bit_depth=10,
                             color=(1.0, 1.0, 1.0), direction='h')
```
def gen_step_gradation(width=1024, height=128, step_num=17, bit_depth=10, color=(1.0, 1.0, 1.0), direction='h', debug=False):
    "\n    # 概要\n    階段状に変化するグラデーションパターンを作る。\n    なお、引数の調整により正確に1階調ずつ変化するパターンも作成可能。\n\n    # 注意事項\n    正確に1階調ずつ変化するグラデーションを作る場合は\n    ```step_num = (2 ** bit_depth) + 1```\n    となるようにパラメータを指定すること。具体例は以下のExample参照。\n\n    # Example\n    ```\n    grad_8 = gen_step_gradation(width=grad_width, height=grad_height,\n                                step_num=257, bit_depth=8,\n                                color=(1.0, 1.0, 1.0), direction='h')\n\n    grad_10 = gen_step_gradation(width=grad_width, height=grad_height,\n                                 step_num=1025, bit_depth=10,\n                                 color=(1.0, 1.0, 1.0), direction='h')\n    ```\n    "
    max = (2 ** bit_depth)
    if (direction == 'h'):
        pass
    else:
        temp = height
        height = width
        width = temp
    if ((max + 1) != step_num):
        '\n        1階調ずつの増加では無いパターン。\n        末尾のデータが 256 や 1024 になるため -1 する。\n        '
        val_list = np.linspace(0, max, step_num)
        val_list[(- 1)] -= 1
    else:
        '\n        正確に1階調ずつ変化するパターン。\n        末尾のデータが 256 や 1024 になるため除外する。\n        '
        val_list = np.linspace(0, max, step_num)[0:(- 1)]
        step_num -= 1
        diff = (val_list[1:] - val_list[0:(- 1)])
        if (diff == 1).all():
            pass
        else:
            raise ValueError('calculated value is invalid.')
    step_length_list = equal_devision(width, step_num)
    step_bar_list = []
    for (step_idx, length) in enumerate(step_length_list):
        step = [((np.ones(length) * color[c_idx]) * val_list[step_idx]) for c_idx in range(3)]
        if (direction == 'h'):
            step = np.dstack(step)
            step_bar_list.append(step)
            step_bar = np.hstack(step_bar_list)
        else:
            step = np.dstack(step).reshape((length, 1, 3))
            step_bar_list.append(step)
            step_bar = np.vstack(step_bar_list)
    if (direction == 'h'):
        img = (step_bar * np.ones((height, 1, 3)))
    else:
        img = (step_bar * np.ones((1, height, 3)))
    if debug:
        preview_image(img, 'rgb')
    return img