diff options
| author | pepperpepperpepper <pepper@scannerjammer.com> | 2015-11-29 17:43:44 -0800 |
|---|---|---|
| committer | pepperpepperpepper <pepper@scannerjammer.com> | 2015-11-29 17:43:44 -0800 |
| commit | 9a7bf3bffb2a8459e66b988aaff53611723b5ab4 (patch) | |
| tree | cc4ef0de15e22f5c6e5f8d2ecf16db0486d7a8ff /ricky/imgrid | |
| parent | 10a619b2c7227b2ad214fbb985141b884fbe87fb (diff) | |
required=0, -e commit message for your changes. Lines starting
Diffstat (limited to 'ricky/imgrid')
| -rw-r--r-- | ricky/imgrid/__init__.py | 13 | ||||
| -rw-r--r-- | ricky/imgrid/imgrid.py | 12 | ||||
| -rwxr-xr-x | ricky/imgrid/options.py (renamed from ricky/imgrid/selections.py) | 27 | ||||
| -rw-r--r-- | ricky/imgrid/params.py | 214 | ||||
| -rw-r--r-- | ricky/imgrid/probabilities.json | 87 |
5 files changed, 243 insertions, 110 deletions
diff --git a/ricky/imgrid/__init__.py b/ricky/imgrid/__init__.py index 1ff6788..3b0b128 100644 --- a/ricky/imgrid/__init__.py +++ b/ricky/imgrid/__init__.py @@ -1 +1,12 @@ -from imgrid import ImGrid +from ricky.im import Im +from ricky.imgrid.params import ImGridParams +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.api = self + return new_params diff --git a/ricky/imgrid/imgrid.py b/ricky/imgrid/imgrid.py deleted file mode 100644 index 3b0b128..0000000 --- a/ricky/imgrid/imgrid.py +++ /dev/null @@ -1,12 +0,0 @@ -from ricky.im import Im -from ricky.imgrid.params import ImGridParams -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.api = self - return new_params diff --git a/ricky/imgrid/selections.py b/ricky/imgrid/options.py index 7338709..38ba1ee 100755 --- a/ricky/imgrid/selections.py +++ b/ricky/imgrid/options.py @@ -1,10 +1,9 @@ -from ricky.param.selections import Selections -format_selections = Selections.from_dict( +format_probabilities = Probabilities.from_dict( { 'weight': 20, 'value': 'png' }, { 'weight': 0, 'value': 'gif' }, { 'weight': 0, 'value': 'jpg' }, ) -transition_selections = Selections.from_dict( +transition_probabilities = Probabilities.from_dict( { "value" : "background", "weight": 1 }, { "value" : "dither", "weight": 1 }, { "value" : "random", "weight": 1 }, @@ -12,52 +11,52 @@ transition_selections = Selections.from_dict( { "value" : "edge", "weight": 1 }, ) skycolor_colors = \ - bgcolor_colors = planebgcolor_colors = Selections.from_dict( + bgcolor_colors = planebgcolor_colors = Probabilities.from_dict( { "value" : "white", "weight" : 1 }, { "value" : "silver", "weight" : 1 }, { "value" : None, "weight" : 10 }, ) -linecolor_colors = Selections.from_dict( +linecolor_colors = Probabilities.from_dict( { "value" : "black", "weight" : 1 }, { "value" : "white", "weight" : 1 }, { "value" : "silver", "weight" : 1 }, ) -swing_selections = tilt_selections = roll_selections = Selections.from_dict( +swing_probabilities = tilt_probabilities = roll_probabilities = Probabilities.from_dict( {"value": "", "weight": 2}, {"value": 30, "weight": 1}, {"value": -30, "weight": 1}, ) -width_selections = height_selections = Selections.from_dict( +width_probabilities = height_probabilities = Probabilities.from_dict( { "value" : 400, "weight" : 1 }, { "value" : 600, "weight" : 1 }, ) -linethickness_selections = Selections.from_dict( +linethickness_probabilities = Probabilities.from_dict( {"value":1, "weight": 2}, {"value":2, "weight": 1}, ) -opacity_selections = Selections.from_dict( +opacity_probabilities = Probabilities.from_dict( {"value":1, "weight": 2}, {"value":0.5, "weight": 1}, ) -spacing_selections = Selections.from_dict( +spacing_probabilities = Probabilities.from_dict( {"value":10, "weight": 1}, {"value":15, "weight": 1}, ) -vlines_selections = hlines_selections = Selections.from_dict( +vlines_probabilities = hlines_probabilities = Probabilities.from_dict( {"value":"", "weight": 2}, {"value":"true", "weight": 1}, ) -shadow_selections = Selections.from_dict( +shadow_probabilities = Probabilities.from_dict( {"value":"", "weight": 1}, {"value":"true", "weight": 1}, ) -zoom_selections = Selections.from_dict( +zoom_probabilities = Probabilities.from_dict( {"value": 0, "weight": 3}, {"value": 1.2, "weight": 1}, {"value": -1.2, "weight": 1}, ) -trim_selections = Selections.from_dict( +trim_probabilities = Probabilities.from_dict( {"value":"", "weight": 1}, {"value":"true", "weight": 1}, ) diff --git a/ricky/imgrid/params.py b/ricky/imgrid/params.py index 580c2f2..5740ebc 100644 --- a/ricky/imgrid/params.py +++ b/ricky/imgrid/params.py @@ -1,61 +1,92 @@ -import re, random +import random from ricky.params import Params -from ricky.param import Param -from ricky.param.selection import Selection -from ricky.param.selections import Selections from ricky.param.username import Username from ricky.param.imageurl import ImageUrl from ricky.param.multiselect import MultiSelect -from ricky.param.numberrange import NumberRange +from ricky.param.constrainednumber import ConstrainedNumber from ricky.param.color import Color +from ricky.param.bool import Bool -from ricky.imgrid.selections import * +_TRANSITION_OPTIONS = [ + "background", + "dither", + "random", + "tile", + "edge" +] -class Param_Zoom(NumberRange): - 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.selections())) + 10 - choice = random.randint(0, weights_total) - position = 0 - for elem in self.selections(): - 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 +_FILETYPE_OPTIONS = [ + "png", + "jpg", + "gif", +] - @property - def value(self): - return super(MultiSelect, self).value_get() - @value.setter - def value(self, value): - self._value = value - if not self._value is None: - self.is_ready = 1 - self.set_by_user = 1 -class Param_Opacity(NumberRange): - def __init__(self, **kwargs): - super(Param_Opacity, self).__init__(**kwargs) - def randomize(self): - weights_total = sum(map(lambda x: x["weight"], self.selections()) + self.range_max - self.range_min) - choice = random.randint(0, weights_total) - position = 0 - for elem in self.selections(): - position += elem["weight"] - if position >= choice: - self.value = elem["value"] - return - self.value = round(random.uniform(self.range_min,range_max), 2), +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(MultiSelect, 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): def __init__(self): @@ -64,48 +95,65 @@ class ImGridParams(Params): ImageUrl(name="bgimage", required=0), ImageUrl(name="imageinstead", required=0), ImageUrl(name="planebgimage", required=0), - MultiSelect(name="format", required=0, selections=format_selections), - MultiSelect(name="transition", required=1, selections=transition_selections), - Color(name="skycolor", required=0, selections=skycolor_colors), - Color(name="planebgcolor", required=0, selections=planebgcolor_colors), - Color(name="bgcolor", required=0, selections=bgcolor_colors), - Color(name="linecolor", required=0, selections=linecolor_colors), - NumberRange(name="swing", required=0, selections=swing_selections, min=-170, max=170), - NumberRange(name="tilt", required=0, selections=tilt_selections, min=-170, max=170), - NumberRange(name="roll", required=0, selections=roll_selections, min=-170, max=170), - NumberRange(name="width", required=0, selections=width_selections, min=100, max=800), - NumberRange(name="height", required=0, selections=height_selections, min=100, max=800), - NumberRange(name="linethickness", required=0, selections=linethickness_selections, min=1, max=30), - NumberRange(name="opacity", required=0, selections=opacity_selections, min=0, max=1), - NumberRange(name="spacing", required=0, selections=spacing_selections, min=2, max=100), - MultiSelect(name="vlines", required=0, selections=vlines_selections), - MultiSelect(name="hlines", required=0, selections=hlines_selections), - MultiSelect(name="trim", required=0, selections=trim_selections), - MultiSelect(name="shadow", required=0, selections=shadow_selections), - Param_Zoom(name="zoom", required=0, selections=zoom_selections, min=-12, max=12, exclusion_range=[-1.1, 1.1]), + MultiSelect( + name="format", + required=False, + options=_FILETYPE_OPTIONS + ), + MultiSelect( + name="transition", + required=1, + options=_TRANSITION_OPTIONS + ), + Color(name="skycolor", required=False), + 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="linethickness", + required=False, + min=1, + max=30 + ), + ConstrainedNumber(name="opacity", required=False, min=0, max=1), + ConstrainedNumber(name="spacing", 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( + name="zoom", + required=False, + min=-12, + max=12, + exclusion_range=[-1.1, 1.1] + ) ] + def test_values(self): - p = self.params 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), ]) + def randomize(self): p = self.params for el in p: - if el in ['spacing', 'linethickness']: - continue - if el.set_by_user: - continue - el.randomize() - for name in ['spacing', 'linethickness']: - max_tries = 10000 - while(max_tries): - self.param(name).randomize() - if self.test_values(): - return - max_tries -= 1 - raise ValueError - + if el in ['spacing', 'linethickness']: + continue + el.randomize() + for name in ['spacing', 'linethickness']: + max_tries = 10000 + while(max_tries): + self.param(name).randomize() + if self.test_values(): + return + max_tries -= 1 + raise ValueError diff --git a/ricky/imgrid/probabilities.json b/ricky/imgrid/probabilities.json new file mode 100644 index 0000000..f9defe8 --- /dev/null +++ b/ricky/imgrid/probabilities.json @@ -0,0 +1,87 @@ +{ + "format" : [ + { "weight": 20, "value": "png" }, + { "weight": 0, "value": "gif" }, + { "weight": 0, "value": "jpg" } + ], + "transition" : [ + { "value" : "background", "weight": 1 }, + { "value" : "dither", "weight": 1 }, + { "value" : "random", "weight": 1 }, + { "value" : "tile", "weight": 1 }, + { "value" : "edge", "weight": 1 } + ], + "skycolor" : [ + { "value" : "white", "weight" : 1 }, + { "value" : "silver", "weight" : 1 }, + { "value" : null, "weight" : 10 } + ], + "bgcolor" : [ + { "value" : "white", "weight" : 1 }, + { "value" : "silver", "weight" : 1 }, + { "value" : null, "weight" : 10 } + ], + "planebgcolor" : [ + { "value" : "white", "weight" : 1 }, + { "value" : "silver", "weight" : 1 }, + { "value" : null, "weight" : 10 } + ], + + "linecolor" : [ + { "value" : "black", "weight" : 1 }, + { "value" : "white", "weight" : 1 }, + { "value" : "silver", "weight" : 1 } + ], + "swing" : [ + {"value": ", "weight": 2}, + {"value": 30, "weight": 1}, + {"value": -30, "weight": 1} + ], + "tilt" : [ + {"value": ", "weight": 2}, + {"value": 30, "weight": 1}, + {"value": -30, "weight": 1} + ], + "roll" : [ + {"value": ", "weight": 2}, + {"value": 30, "weight": 1}, + {"value": -30, "weight": 1} + ], + "width" : "height" : [ + { "value" : 400, "weight" : 1 }, + { "value" : 600, "weight" : 1 } + ], + "linethickness" : [ + {"value":1, "weight": 2}, + {"value":2, "weight": 1} + ], + "opacity" : [ + {"value":1, "weight": 2}, + {"value":0.5, "weight": 1} + ], + "spacing" : [ + {"value":10, "weight": 1}, + {"value":15, "weight": 1} + ], + "vlines" : [ + {"value":", "weight": 2}, + {"value":"true", "weight": 1} + ], + "hlines" : [ + {"value":", "weight": 2}, + {"value":"true", "weight": 1} + ], + "shadow" : [ + {"value":", "weight": 1}, + {"value":"true", "weight": 1} + ], + "zoom" : [ + {"value": 0, "weight": 3}, + {"value": 1.2, "weight": 1}, + {"value": -1.2, "weight": 1} + ], + "trim" : [ + {"value":", "weight": 1}, + {"value":"true", "weight": 1} + ] +} |
