134 lines
4.7 KiB
Python
134 lines
4.7 KiB
Python
import warnings
|
|
from typing import TypeVar, Union
|
|
|
|
|
|
class SolidColorParams:
|
|
|
|
"""
|
|
Special configuration class for configure Solid color pattern. Contains information about R (Y) - first,
|
|
G (Cb) - second, B(Cr) - third components.
|
|
"""
|
|
|
|
def __init__(self, first: int = 0, second: int = 0, third: int = 0):
|
|
if not (0 <= first <= 255):
|
|
warnings.warn("Incorrect value. Must use value from range: 0 - 255. Will be used default value = 0")
|
|
first = 0
|
|
self.first = first
|
|
|
|
if not (0 <= second <= 255):
|
|
warnings.warn("Incorrect value. Must use value from range: 0 - 255. Will be used default value = 0")
|
|
second = 0
|
|
self.second = second
|
|
|
|
if not (0 <= third <= 255):
|
|
warnings.warn("Incorrect value. Must use value from range: 0 - 255. Will be used default value = 0")
|
|
third = 0
|
|
self.third = third
|
|
|
|
|
|
class WhiteVStripsParams:
|
|
|
|
"""
|
|
Special configuration class for configure White V Strips pattern. Contains information about white stripes width
|
|
and black stripes width.
|
|
"""
|
|
|
|
def __init__(self, white_stripes_width: int = 1, black_stripes_width: int = 1):
|
|
if not (1 <= white_stripes_width <= 1000):
|
|
warnings.warn("Incorrect value. Must use value from range: 1 - 1000. Will be used default value = 1")
|
|
white_stripes_width = 1
|
|
self.white_stripes_width = white_stripes_width
|
|
|
|
if not (0 <= black_stripes_width <= 1000):
|
|
warnings.warn("Incorrect value. Must use value from range: 1 - 1000. Will be used default value = 1")
|
|
black_stripes_width = 1
|
|
self.black_stripes_width = black_stripes_width
|
|
|
|
|
|
class GradientStripsParams:
|
|
|
|
"""
|
|
Special configuration class for configure Gradient Strips pattern. Contains information about color steps conut.
|
|
"""
|
|
|
|
def __init__(self, color_step: int = 10000):
|
|
if not (0 <= color_step <= 10000):
|
|
warnings.warn("Incorrect value. Must use value from range: 1 - 10000. Will be used default value = 1")
|
|
color_step = 1
|
|
self.color_step = color_step
|
|
|
|
|
|
class MotionParams:
|
|
|
|
"""
|
|
Special configuration class for configure Motion pattern. Contains information about frames conut.
|
|
"""
|
|
|
|
def __init__(self, frames_count: int = 10000):
|
|
if not (0 <= frames_count <= 10000):
|
|
warnings.warn("Incorrect value. Must use value from range: 1 - 10000. Will be used default value = 1")
|
|
frames_count = 1
|
|
self.frames_count = frames_count
|
|
|
|
|
|
class SquareWindowParams:
|
|
|
|
"""
|
|
Special configuration class for configure Square Window pattern. Contains information about white square size.
|
|
"""
|
|
|
|
def __init__(self, white_square: int = 30):
|
|
if not (0 <= white_square <= 100):
|
|
warnings.warn("Incorrect value. Must use value from range: 0 - 100. Will be used default value = 30")
|
|
white_square = 30
|
|
self.white_square = white_square
|
|
|
|
|
|
class StepsScrollingParams:
|
|
|
|
"""
|
|
Special configuration class for configure Scrolling (Steps type) pattern. Contains information about horizontally
|
|
delta, vertically delta and frames count.
|
|
"""
|
|
|
|
def __init__(self, horizontally: int = 0, vertically: int = 0, frames: int = 0):
|
|
if not (-128 <= horizontally <= 127):
|
|
warnings.warn("Incorrect value (horizontally). Must use value from range: (-)128 - 127. "
|
|
"For YCbCr 422 range: (-)128 - 126 \n"
|
|
"Will be used default value = 0")
|
|
horizontally = 0
|
|
if not (-128 <= vertically <= 127):
|
|
warnings.warn("Incorrect value (vertically). Must use value from range: (-)128 - 127. "
|
|
"For YCbCr 420 range: (-)128 - 126 \n"
|
|
"Will be used default value = 0")
|
|
vertically = 0
|
|
if not (0 <= frames <= 255):
|
|
warnings.warn("Incorrect value (frames). Must use value from range: 0 - 255. "
|
|
"Will be used default value = 0")
|
|
frames = 0
|
|
self.horizontally = (-1) * horizontally
|
|
self.vertically = vertically
|
|
self.frames = frames
|
|
|
|
|
|
class DistanceScrollingParams:
|
|
"""
|
|
Support of DistanceScrolling will be added later.
|
|
"""
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
PGPatternParams = TypeVar("PGPatternParams",
|
|
SolidColorParams,
|
|
WhiteVStripsParams,
|
|
GradientStripsParams,
|
|
MotionParams,
|
|
SquareWindowParams
|
|
)
|
|
|
|
|
|
PGScrollingParams = TypeVar("PGScrollingParams",
|
|
StepsScrollingParams,
|
|
DistanceScrollingParams)
|