diff options
| author | pepperpepperpepper <pepper@scannerjammer.com> | 2015-12-05 23:20:17 -0800 |
|---|---|---|
| committer | pepperpepperpepper <pepper@scannerjammer.com> | 2015-12-05 23:20:17 -0800 |
| commit | 31b969a687348015fc6292fb5c03cd6e8bd60489 (patch) | |
| tree | 7f1b4bdaf7bd60d1ec25b4fa7cad558523a169b4 | |
| parent | dac73bd39db07e2fc471fb306f62d48d9a7faf9e (diff) | |
fixed imgrid
| -rwxr-xr-x | example.py | 3 | ||||
| -rw-r--r-- | ricky/imgrid/__init__.py | 8 | ||||
| -rw-r--r-- | ricky/imgrid/params.py | 143 | ||||
| -rw-r--r-- | ricky/param/constrainednumber.py | 20 |
4 files changed, 72 insertions, 102 deletions
@@ -1,9 +1,10 @@ #!/usr/bin/python2.7 from ricky.imgradient import ImGradient from ricky.imbreak import ImBreak +from ricky.imgrid import ImGrid -api = ImBreak() +api = ImGrid() params = api.params_init() print params params.randomize() diff --git a/ricky/imgrid/__init__.py b/ricky/imgrid/__init__.py index 3b0b128..e977115 100644 --- a/ricky/imgrid/__init__.py +++ b/ricky/imgrid/__init__.py @@ -1,12 +1,14 @@ from ricky.im import Im -from ricky.imgrid.params import ImGridParams +from ricky.imgrid.params import Params from ricky.config import IMGRID_URL + class ImGrid(Im): def __init__(self): self.url = IMGRID_URL + def params_init(self): - new_params = ImGridParams() - #new_params = self.get_from_server() + new_params = Params() + # new_params = self.get_from_server() new_params.api = self return new_params diff --git a/ricky/imgrid/params.py b/ricky/imgrid/params.py index fc54f25..01f1ff7 100644 --- a/ricky/imgrid/params.py +++ b/ricky/imgrid/params.py @@ -1,5 +1,4 @@ -import random -from ricky.params import Params +from ricky.params import Params as _Params from ricky.param.username import Username from ricky.param.imageurl import ImageUrl from ricky.param.enum import Enum @@ -22,73 +21,7 @@ _FILETYPE_OPTIONS = [ ] -class Param_Zoom(ConstrainedNumber): - def __init__(self, **kwargs): - super(Param_Zoom, self).__init__(**kwargs) - self.exclusion_range = kwargs['exclusion_range'] - - def test_value(self): - return not ( - (self.value > self.exclusion_range[0]) and - (self.value < self.exclusion_range[1]) - ) - - def randomize(self): - weights_total = sum( - map(lambda x: x["weight"], self.probabilities()) - ) + 10 - choice = random.randint(0, weights_total) - position = 0 - for elem in self.probabilities(): - position += elem["weight"] - if position >= choice: - self.value = elem["value"] - return - max_tries = 10000 - while(max_tries): - self.value = round( - random.uniform(self.range_max, self.range_min), 2 - ) - if self.test_value: - return - max_tries -= 1 - raise ValueError - - @property - def value(self): - return super(Enum, self).value_get() - - @value.setter - def value(self, value): - self._value = value - if self._value is not None: - self.is_ready = 1 - self.set_by_user = 1 - - -class Param_Opacity(ConstrainedNumber): - def __init__(self, **kwargs): - super(Param_Opacity, self).__init__(**kwargs) - - def randomize(self): - weights_total = sum( - map( - lambda x: x["weight"], self.probabilities() - ) + self.range_max - self.range_min - ) - choice = random.randint(0, weights_total) - position = 0 - for elem in self.probabilities(): - position += elem["weight"] - if position >= choice: - self.value = elem["value"] - return - self.value = round( - random.uniform(self.range_min, self.range_max), 2 - ) - - -class ImGridParams(Params): +class Params(_Params): def __init__(self): self._params = ( Username(name="username", required=False), @@ -109,42 +42,80 @@ class ImGridParams(Params): Color(name="planebgcolor", required=False), Color(name="bgcolor", required=False), Color(name="linecolor", required=False), - ConstrainedNumber(name="swing", required=False, min=-170, max=170), - ConstrainedNumber(name="tilt", required=False, min=-170, max=170), - ConstrainedNumber(name="roll", required=False, min=-170, max=170), - ConstrainedNumber(name="width", required=False, min=100, max=800), - ConstrainedNumber(name="height", required=False, min=100, max=800), + ConstrainedNumber( + name="swing", + required=False, + enforce_int=True, + min=-170, + max=170), + ConstrainedNumber( + name="tilt", + required=False, + enforce_int=True, + min=-170, + max=170), + ConstrainedNumber( + name="roll", + required=False, + enforce_int=True, + min=-170, + max=170), + ConstrainedNumber( + name="width", + required=False, + enforce_int=True, + min=100, + max=800), + ConstrainedNumber( + name="height", + required=False, + enforce_int=True, + min=100, + max=800), ConstrainedNumber( name="linethickness", required=False, + enforce_int=True, min=1, max=30 ), - ConstrainedNumber(name="opacity", required=False, min=0, max=1), - ConstrainedNumber(name="spacing", required=False, min=2, max=100), + ConstrainedNumber( + name="opacity", required=False, min=0, max=1, prec=2), + ConstrainedNumber( + name="spacing", + enforce_int=True, + required=False, + min=2, + max=100), Bool(name="vlines", required=False), Bool(name="hlines", required=False), Bool(name="trim", required=False), Bool(name="shadow", required=False), - Param_Zoom( + ConstrainedNumber( name="zoom", required=False, min=-12, max=12, - exclusion_range=[-1.1, 1.1] + forbidden_range_min=-1.1, + forbidden_range_max=1.1, + prec=1 ) ) - def test_values(self): + def _test_values(self): return not any([ - (self.param('spacing').value > self.param('width').value), - (self.param('spacing').value > self.param('height').value), - (self.param('linethickness').value > self.param('width').value), - (self.param('linethickness').value > self.param('height').value), + (self.__getitem__('spacing').value > + self.__getitem__('width').value), + (self.__getitem__('spacing').value > + self.__getitem__('height').value), + (self.__getitem__('linethickness').value > + self.__getitem__('width').value), + (self.__getitem__('linethickness').value > + self.__getitem__('height').value), ]) def randomize(self): - p = self.params + p = self._params for el in p: if el in ['spacing', 'linethickness']: continue @@ -152,8 +123,8 @@ class ImGridParams(Params): for name in ['spacing', 'linethickness']: max_tries = 10000 while(max_tries): - self.param(name).randomize() - if self.test_values(): + self.__getitem__(name).randomize() + if self._test_values(): return max_tries -= 1 raise ValueError diff --git a/ricky/param/constrainednumber.py b/ricky/param/constrainednumber.py index 3cf009e..3563d22 100644 --- a/ricky/param/constrainednumber.py +++ b/ricky/param/constrainednumber.py @@ -39,16 +39,12 @@ class ConstrainedNumber(Param): "Value %s is forbidden" % value ) if (self.forbidden_range_max or self.forbidden_range_max == 0) and \ - self.forbidden_range_max >= value: + (self.forbidden_range_min or self.forbidden_range_min == 0) and \ + self.forbidden_range_min <= value and \ + self.forbidden_range_max >= value: raise ValueError( - "In forbidden range: Value %s is below %s" % - (value, self.forbidden_range_max) - ) - if (self.forbidden_range_min or self.forbidden_range_min == 0) and \ - self.forbidden_range_min <= value: - raise ValueError( - "In forbidden range: Value %s is above %s" % - (value, self.forbidden_range_min) + "In forbidden range: Value %s is above %s and below %s" % + (value, self.forbidden_range_min, self.forbidden_range_max) ) if self.enforce_int and type(value) != int: raise ValueError( @@ -77,15 +73,15 @@ class ConstrainedNumber(Param): value = int(value) self.value = value - def randomize(self): - tries = 0 + def randomize(self, tries=0): tries_max = 30 try: self._generate_random() except ValueError: tries += 1 + print "TRIES:%s\n" % tries if tries < tries_max: - self._generate_random() + self.randomize(tries=tries) else: raise ValueError( "Unable to set random value on %s in %s tries" |
