from PSPApp import *
import PSPUtils

def ScriptProperties():
    return {
        'Author': u'Corel Corporation',
        'Copyright': u'Copyright (c) 2002-2006 Corel Corporation. All rights reserved.',
        'Description': "Airbrush and Ink Effect",
        'Host': u'Paint Shop Pro 9',
        'Host Version': u'9.00'
        }

def Do(Environment):
    # EnableOptimizedScriptUndo
    App.Do( Environment, 'EnableOptimizedScriptUndo', {
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Default, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    if not PSPUtils.IsTrueColor(Environment, App.TargetDocument):
        # IncreaseColorsTo16Million
        App.Do( Environment, 'IncreaseColorsTo16Million', {
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # JPEG Artifact Removal
    App.Do( Environment, 'JPEGArtifactRemoval', {
            'RestoreCrispness': 50, 
            'Strength': App.Constants.JPEGStrength.Normal, 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'RandomSeed': 45565366, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # Color Adjust Hue Map
    App.Do( Environment, 'ColorAdjustHueMap', {
            'HueShift': (0,36,72,108,144,180,216,252,288,324), 
            'LightnessShift': 30, 
            'SaturationShift': 0, 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # LayerDuplicate
    App.Do( Environment, 'LayerDuplicate', {
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Default, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # FindEdges
    App.Do( Environment, 'FindEdges', {
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Default, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # HistogramEqualize
    App.Do( Environment, 'HistogramEqualize', {
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Default, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # ColorAdjustCurves
    App.Do( Environment, 'ColorAdjustCurves', {
            'CurveParams': {
                'RGB': [(0,0),(27,116),(88,206),(170,251),(255,255)], 
                'Red': [(0,0),(255,255)], 
                'Green': [(0,0),(255,255)], 
                'Blue': [(0,0),(255,255)]
                }, 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # Layer Properties
    App.Do( Environment, 'LayerProperties', {
            'General': {
                'Opacity': None, 
                'Name': None, 
                'IsVisible': None, 
                'IsTransparencyLocked': None, 
                'LinkSet': None, 
                'UseHighlight': None, 
                'PaletteHighlightColor': None, 
                'GroupLink': None, 
                'BlendMode': App.Constants.BlendMode.Multiply
                }, 
            'BlendRanges': None, 
            'Path': None, 
            'ArtMediaTexture': None, 
            'BrightnessContrast': None, 
            'ChannelMixer': None, 
            'ColorBalance': None, 
            'CurveParams': None, 
            'HSL': None, 
            'Threshold': None, 
            'Levels': None, 
            'Posterize': None, 
            'Overlay': None, 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # SelectLayer
    App.Do( Environment, 'SelectLayer', {
            'Path': (0,-1,[],False), 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'AutoActionMode': App.Constants.AutoActionMode.Default,
                'Version': ((9,0,0),1)
                }
            })

    # Gaussian Blur
    App.Do( Environment, 'GaussianBlur', {
            'Radius': 8, 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # Auto Saturation Enhancement
    App.Do( Environment, 'AutoSaturationEnhancement', {
            'Bias': App.Constants.SaturationBias.Normal, 
            'Skintones': False, 
            'Strength': App.Constants.SaturationStrength.Normal, 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # Add Noise
    App.Do( Environment, 'AddNoise', {
            'NoiseAmount': 20, 
            'NoiseType': App.Constants.NoiseType.Gaussian, 
            'Monochrome': True, 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'RandomSeed': 48788792, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # LayerMergeAll
    App.Do( Environment, 'LayerMergeAll', {
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Default, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })

    # Auto Contrast Enhancement
    App.Do( Environment, 'AutoContrastEnhancement', {
            'Appearance': App.Constants.Appearance.Natural, 
            'Bias': App.Constants.ContrastBias.Neutral, 
            'Strength': App.Constants.ContrastStrength.Normal, 
            'GeneralSettings': {
                'ExecutionMode': App.Constants.ExecutionMode.Silent, 
                'AutoActionMode': App.Constants.AutoActionMode.Match,
                'Version': ((9,0,0),1)
                }
            })
    
