#! /usr/bin/env python2

from gimpfu import *

def python_ColorPrep(img, layer):
	#Check if image is grayscale mode
	is_gray = pdb.gimp_drawable_is_gray(layer)
	#pdb.gimp_message (is_gray)
	if (is_gray == TRUE):
		pdb.gimp_message ("Image is grayscale.  Converting to RGB.")
		pdb.gimp_image_convert_rgb(img)
	#end if

	newLayer = pdb.gimp_layer_copy(layer, pdb.gimp_drawable_has_alpha(layer)) #Duplicate layer
	pdb.gimp_image_insert_layer(img, newLayer, None, -1)
	pdb.gimp_drawable_desaturate(newLayer,3)	#Desaturate duplicate layer
	active_layer_name = pdb.gimp_item_get_name(layer) + " copy"
	active_layer = newLayer
	
	#Create Eye Colors group and Add Black soft light blend Layer with mask to Eyes group
	ParentGroup=pdb.gimp_layer_group_new(img)
	pdb.gimp_image_insert_layer(img, ParentGroup, None, -1)
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Black",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#0d0c0c")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 0)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	mask = pdb.gimp_layer_create_mask(ParentGroup, ADD_MASK_WHITE) #add white layer mask to group
	pdb.gimp_layer_add_mask(ParentGroup, mask)
	ParentGroup.name = "Eyes"
	ParentGroup.mode = LAYER_MODE_PASS_THROUGH
	
	#Add White soft light blend Layer with mask to Eyes group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"White",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#eff3f7")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 1)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add EyeVeins soft light blend Layer with mask to Eye group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Eye Veins",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_pattern("EyeVeinsReal2a")
	pdb.gimp_drawable_fill(newLayer, FILL_PATTERN)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 2)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Waterline soft light blend Layer with mask to Eyes group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Waterline",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#f68181")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 3)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Blue soft light blend Layer with mask to Eyes group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Blue",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#2e536f")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 4)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Brown soft light blend Layer with mask to Eyes group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Brown",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#634e34")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 5)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Yellow soft light blend Layer with mask to Eyes group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Yellow",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#d5cf2b")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 6)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Green soft light blend Layer with mask to Eyes group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Green",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#3d671d")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 7)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Hazel soft light blend Layer with mask to Eyes group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Hazel",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#8C954C")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 8)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Create Skin Colors group and add new soft light blend Layer with mask to Skin group 
	ParentGroup=pdb.gimp_layer_group_new(img)
	pdb.gimp_image_insert_layer(img, ParentGroup, None, 0)
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Skin Color 1",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#e2b99a")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 0)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	mask = pdb.gimp_layer_create_mask(ParentGroup, ADD_MASK_WHITE) #add white layer mask
	pdb.gimp_layer_add_mask(ParentGroup, mask)
	ParentGroup.name = "Skin"	#Rename Group to Skin
	ParentGroup.mode = LAYER_MODE_PASS_THROUGH
	
	#Add 2nd soft light blend Layer with mask to Skin group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Skin Color 2",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#e1a876")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 1)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)

	#Add 3rd soft light blend Layer with mask to Skin group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Skin Color 3",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#e6a274")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 2)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add 4th soft light blend Layer with mask to Skin group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Skin Color 4",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#bd6d49")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 3)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add 5th soft light blend Layer with mask to Skin group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Skin Color 5",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#a73a00")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 4)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add 6th soft light blend Layer with mask to Skin group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Skin Color 6",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#730101")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 5)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add 7th soft light blend Layer with mask to Skin group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Skin Color 7",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#3C2C17")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 6)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Fingernails soft light blend Layer with mask to Skin group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Fingernails",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#fadfd7")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 7)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Create Face Colors group and Add Cheeks soft light blend Layer with mask to Face group
	ParentGroup=pdb.gimp_layer_group_new(img)
	pdb.gimp_image_insert_layer(img, ParentGroup, None, 0)
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Cheeks",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#ff0000")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 0)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	mask = pdb.gimp_layer_create_mask(ParentGroup, ADD_MASK_WHITE) #add white layer mask to group
	pdb.gimp_layer_add_mask(ParentGroup, mask)
	ParentGroup.name = "Face"	#Rename Group to Skin
	ParentGroup.mode = LAYER_MODE_PASS_THROUGH
	
	#Add Lips soft light blend Layer with mask to Face group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Lips",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#9c5531")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 1)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Tongue soft light blend Layer with mask to Face group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Tongue",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#d1908e")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 2)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Teeth soft light blend Layer with mask to Face group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Teeth",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#F8FFF0")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 3)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Gums soft light blend Layer with mask to Face group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Gums",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#ffb3b3")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 4)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Blue tone soft light blend Layer with mask to Face group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Blue Tone",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#0ba9ed")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 5)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Yellow tone soft light blend Layer with mask to Face group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Yellow Tone",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#f9f90d")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 6)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Create Hair Colors group and Add Brown soft light blend Layer with mask to Hair group
	ParentGroup=pdb.gimp_layer_group_new(img) #Create group layer
	pdb.gimp_image_insert_layer(img, ParentGroup, None, 0)
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Brown Hair",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#654321")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 0)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	mask = pdb.gimp_layer_create_mask(ParentGroup, ADD_MASK_WHITE) #add white layer mask to Group
	pdb.gimp_layer_add_mask(ParentGroup, mask)
	ParentGroup.mode = LAYER_MODE_PASS_THROUGH  #Change layer blend mode
	ParentGroup.name = "Hair"	#Rename Group to Hair
	
	#Add Blonde soft light blend Layer with mask to Hair group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Blonde Hair",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#faf0be")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 1)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Brunette soft light blend Layer with mask to Hair group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Brunette Hair",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#5C4937")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 2)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Auburn soft light blend Layer with mask to Hair group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Auburn Hair",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#a52a2a")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 3)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Add Black soft light blend Layer with mask to Hair group
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Black Hair",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_foreground("#242424")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, ParentGroup, 3)	#add layer
	mask = pdb.gimp_layer_create_mask(newLayer, ADD_MASK_BLACK) #add layer mask
	pdb.gimp_layer_add_mask(newLayer, mask)
	
	#Create Dodge and Burn Layer and set fill color to 50% gray.
	newLayer = pdb.gimp_layer_new (img,layer.width,layer.height,layer.type,"Dodge & Burn",100,LAYER_MODE_SOFTLIGHT) 
	pdb.gimp_context_set_default_colors()
	pdb.gimp_context_swap_colors()
	pdb.gimp_context_set_foreground("#808080")
	pdb.gimp_drawable_fill(newLayer, FILL_FOREGROUND)
	pdb.gimp_image_insert_layer(img, newLayer, None, 0)	#add layer
	
	#Set focus back to duplicated layer (desaturated) of original for preparing to color
	pdb.gimp_image_set_active_layer(img, active_layer)
	return

register(
		"python_fu_ColorPrep",                            
		"Prep Image for Coloring",
		"Duplicates layer, desaturates and adds coloring layers for skin, face, hair and eyes",
		"Mike Maddox",
		"Mike Maddox",
		"2021",
		"<Image>/Python-Fu/Prep Image For Color...",
		"*",
		[
		
		],
		[],
		python_ColorPrep)

main()
