********************************************************************************
* Description of the Program -												   *
* This program takes an RGB variable and creates/returns transforms of the RGB *
* value for each of the types of color sightedness impairment.				   *
*                                                                              *
* Data Requirements -														   *
*     none                                                                     *
*																			   *
* Dependencies -															   *
*     libbrewscheme.mlib													   *
*                                                                              *
* Program Output -                                                             *
*     achronopsia - Complete color blindness RGB transform/translate		   *
*	  protanopia - Red color blindness RGB transform/translate				   *
*	  deuteranopia - Green color blindness RGB transform/translate			   *
*	  tritanopia - Blue color blindness RGB transform/translate				   *
*                                                                              *
* Lines -                                                                      *
*     94                                                                       *
*                                                                              *
********************************************************************************
		
*! brewtransform
*! v 1.0.0
*! 21MAR2016

// Drop the program if already loaded in memory
cap prog drop brewtransform

// Define the program brewtransform
prog def brewtransform

	// Version to use for interpretation of code
	version 13.1
	
	// Syntax structure for program
	syntax varlist(max=1 string)
	
	// Check for brewscheme Mata library
	qui: brewlibcheck
	
	// Get all unique rgb values
	qui: levelsof `varlist', loc(colors)
	
	// New variable creation/checks
	foreach v in achromatopsia protanopia deuteranopia tritanopia {
	
		// Check to see if variable exists
		cap confirm new v `v'
		
		// If variable does not exist
		if _rc == 0 {
		
			// Create the variable
			qui: g `v' = ""
			
		} // End IF Block for new variable
		
	} // End Loop for color transformation variable creation
	
	// Loop over the rgb values
	foreach rgbval of loc colors {
	
		// Get the transformed rgb
		mata translateColor(`: subinstr loc rgbval `" "' `", "', all')
		
		// Set achomatopsia value
		qui: replace achromatopsia = "`achromatopsia'" if `varlist' == "`rgbval'"
		
		// Set protanopia value
		qui: replace protanopia = "`protanopia'" if `varlist' == "`rgbval'"
		
		// Set deuteranopia value
		qui: replace deuteranopia = "`deuteranopia'" if `varlist' == "`rgbval'"
		
		// Set tritanopia value
		qui: replace tritanopia = "`tritanopia'" if `varlist' == "`rgbval'"
		
	} // End loop over colors
	
	// Label the color sightedness impairment variables
	la var achromatopsia `"`achromatopsialab' RGB Transformed Equivalent"'
	
	// Label the color sightedness impairment variables
	la var protanopia `"`protanopialab' RGB Transformed Equivalent"'
	
	// Label the color sightedness impairment variables
	la var deuteranopia `"`deuteranopialab' RGB Transformed Equivalent"'
	
	// Label the color sightedness impairment variables
	la var tritanopia `"`tritanopialab' RGB Transformed Equivalent"'
	
// End of program
end