'''[[[cog
import element_utilities

element_utilities.generate_element('../schemas/uielement_schema.json')
]]]'''
# GENERATED SECTION, DO NOT HAND EDIT
class UIElement:
	def __init__(self, type, origin, size, justify, anchor, color, alpha, mod_col, mod_alp):
		self.type = type
		self.origin = origin
		self.size = size
		self.justify = justify
		self.anchor = anchor
		self.color = color
		self.alpha = alpha
		self.mod_col = mod_col
		self.mod_alp = mod_alp

# [ Data Getter / Setter ]
	def _get_type(self):
		return self.__type

	def _set_type(self, value):
		if not isinstance(value, str):
			raise TypeError("type must be set to a string")
		self.__type = value

	def _get_origin(self):
		 return self.__origin

	def _set_origin(self, value):
		if not isinstance(value, list):
			raise TypeError("origin must be set to an array")
		if len(value) < 2:
			raise TypeError("origin must have at least 2 elements")
		if len(value) > 2:
			raise TypeError("origin cannot have more than 2 elements")
		for element in value:
			if not isinstance(element, int) and not isinstance(element, float):
				raise TypeError("origin must only contain float or int %s" % str(type(element)))
		self.__origin = value

	def _get_size(self):
		 return self.__size

	def _set_size(self, value):
		if not isinstance(value, list):
			raise TypeError("size must be set to an array")
		if len(value) < 2:
			raise TypeError("size must have at least 2 elements")
		if len(value) > 2:
			raise TypeError("size cannot have more than 2 elements")
		for element in value:
			if not isinstance(element, int) and not isinstance(element, float):
				raise TypeError("size must only contain float or int %s" % str(type(element)))
		self.__size = value

	def _get_justify(self):
		 return self.__justify

	def _set_justify(self, value):
		if not isinstance(value, list):
			raise TypeError("justify must be set to an array")
		if len(value) < 2:
			raise TypeError("justify must have at least 2 elements")
		if len(value) > 2:
			raise TypeError("justify cannot have more than 2 elements")
		for element in value:
			if not isinstance(element, int) and not isinstance(element, float):
				raise TypeError("justify must only contain float or int %s" % str(type(element)))
		self.__justify = value

	def _get_anchor(self):
		 return self.__anchor

	def _set_anchor(self, value):
		if not isinstance(value, list):
			raise TypeError("anchor must be set to an array")
		if len(value) < 2:
			raise TypeError("anchor must have at least 2 elements")
		if len(value) > 2:
			raise TypeError("anchor cannot have more than 2 elements")
		for element in value:
			if not isinstance(element, int) and not isinstance(element, float):
				raise TypeError("anchor must only contain float or int %s" % str(type(element)))
		self.__anchor = value

	def _get_color(self):
		 return self.__color

	def _set_color(self, value):
		if not isinstance(value, list):
			raise TypeError("color must be set to an array")
		if len(value) < 3:
			raise TypeError("color must have at least 3 elements")
		if len(value) > 3:
			raise TypeError("color cannot have more than 3 elements")
		for element in value:
			if not isinstance(element, int) and not isinstance(element, float):
				raise TypeError("color must only contain float or int %s" % str(type(element)))
		self.__color = value

	def _get_alpha(self):
		return self.__alpha

	def _set_alpha(self, value):
		if not isinstance(value, int) and not isinstance(value, float):
			raise TypeError("alpha must be set to a float or int")
		self.__alpha = value

	def _get_mod_col(self):
		return self.__mod_col

	def _set_mod_col(self, value):
		if not isinstance(value, int) and not isinstance(value, float):
			raise TypeError("mod_col must be set to a float or int")
		self.__mod_col = value

	def _get_mod_alp(self):
		return self.__mod_alp

	def _set_mod_alp(self, value):
		if not isinstance(value, int) and not isinstance(value, float):
			raise TypeError("mod_alp must be set to a float or int")
		self.__mod_alp = value


# [ Public Properties ]
	type = property(_get_type, _set_type) #string
	origin = property(_get_origin, _set_origin) #number array
	size = property(_get_size, _set_size) #number array
	justify = property(_get_justify, _set_justify) #number array
	anchor = property(_get_anchor, _set_anchor) #number array
	color = property(_get_color, _set_color) #number array
	alpha = property(_get_alpha, _set_alpha) #number
	mod_col = property(_get_mod_col, _set_mod_col) #number
	mod_alp = property(_get_mod_alp, _set_mod_alp) #number

# [ Backing Properties ]
	__type = "" #string
	__origin = [] #number array
	__size = [] #number array
	__justify = [] #number array
	__anchor = [] #number array
	__color = [] #number array
	__alpha = 0 # number
	__mod_col = 0 # number
	__mod_alp = 0 # number
# END GENERATED SECTION
#[[[end]]]