#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# $Id$
#
from openalea.core.external import Node, ISequence
import openalea.plantgl.all as pgl
"""
We define stuff to implement new colors
"""
""" there are 5 builtin colors in oa.mtg.plantframe :
0 : kind of black
1 : copper
2 : green
3 : red
4 : sort of yellow
So we add up colors from the electrical color code from 11 to 19,
and next will be pastels.
# we do neither define nor use all of these colors for now
"""
strand = 1
brown = 11
red = 12
yellow = 14
green = 15
blue = 16
purple = 17
grey = 18
white = 19
# Next will be useful for organs
button = 20
fruit = 21
ped = 22
petal = 23
pink = 24
receptacle = 25
sepal = 26
leaf = 27
# others for fun or testing
perlGrey = 28
brokenWhite = 29
# KO
koPink = 30
# Knop
anthocyan = 31
[docs]
def Anthocyan():
return pgl.Color3(100, 50, 50)
[docs]
def Blue():
return pgl.Color3(80, 80, 255)
[docs]
def LightBlue():
return pgl.Color3(127, 192, 255)
[docs]
def Brown():
return pgl.Color3(70, 32, 10)
[docs]
def LightBrown():
return pgl.Color3(139, 69, 19) # from SaddleBrown in /usr/share/X11/rgb.txt
[docs]
def Green():
return pgl.Color3(80, 255, 80) # flashy green
[docs]
def LightGreen():
return pgl.Color3(176, 255, 176)
[docs]
def LightGrey():
return pgl.Color3(192, 192, 192)
def _KoPink():
return pgl.Color3(140, 25, 55) # from petal scans
[docs]
def PerlGrey():
return pgl.Color3(228, 228, 228)
[docs]
def LightOrange():
return pgl.Color3(255, 192, 127)
[docs]
def Purple():
return pgl.Color3(255, 80, 255)
[docs]
def LightPurple():
return pgl.Color3(255, 144, 255)
[docs]
def Pink():
return pgl.Color3(255, 192, 203)
[docs]
def Red():
return pgl.Color3(255, 32, 32)
[docs]
def Strand():
return pgl.Color3(80, 80, 20) # set a realistic one
[docs]
def White():
return pgl.Color3(255, 255, 255)
[docs]
def BrokenWhite():
return pgl.Color3(240, 240, 240)
[docs]
def Yellow():
return pgl.Color3(240, 240, 16)
[docs]
def LightYellow():
return pgl.Color3(250, 250, 192)
# The following colors are hard coding the type of the organ
# TODO : if one of the 3 values exceeds 127, is there scaling?
[docs]
def Fruit():
return pgl.Color3(255, 127, 0)
[docs]
def Leaf():
return pgl.Color3(30, 60, 10) # 30,60,10 ; test à 64,128,21
[docs]
def Ped():
return pgl.Color3(130, 90, 30) # 65,45,15)
[docs]
def Receptacle():
return pgl.Color3(59, 130, 36) # 25,55,15)
[docs]
def Petal():
return pgl.Color3(255, 45, 100) # 140,25,55) # 100,50,50
[docs]
def Sepal():
return pgl.Color3(65, 130, 21) # 30,60,10)
[docs]
def setTurtleFruit(t):
t.setColorAt(fruit, Fruit())
t.setColor(fruit)
[docs]
def setTurtleLeaf(t):
t.setColorAt(leaf, Leaf())
t.setColor(leaf)
[docs]
def setTurtlePed(t):
t.setColorAt(ped, Ped())
t.setColor(ped)
[docs]
def setTurtleReceptacle(t):
t.setColorAt(receptacle, Receptacle())
t.setColor(receptacle)
[docs]
def setTurtlePetal(t):
t.setColorAt(petal, Petal())
t.setColor(petal)
[docs]
def setTurtleSepal(t):
t.setColorAt(sepal, Sepal())
t.setColor(sepal)
# end hard code
[docs]
def setTurtleAnthocyan(t):
t.setColorAt(anthocyan, Anthocyan())
t.setColor(anthocyan)
[docs]
def setTurtleBlue(t):
t.setColorAt(blue, Blue())
t.setColor(blue)
[docs]
def setTurtleBrown(t):
t.setColorAt(brown, Brown())
t.setColor(brown)
[docs]
def setTurtleGreen(t):
t.setColorAt(green, Green())
t.setColor(green)
[docs]
def setTurtleKoPink(t):
t.setColorAt(koPink, _KoPink())
t.setColor(koPink)
[docs]
def setTurtlePerlGrey(t):
t.setColorAt(perlGrey, PerlGrey())
t.setColor(perlGrey)
[docs]
def setTurtlePink(t):
t.setColorAt(pink, Pink())
t.setColor(pink)
[docs]
def setTurtleRed(t):
t.setColorAt(red, Red())
t.setColor(red)
[docs]
def setTurtleStrand(t):
t.setColorAt(strand, Strand())
t.setColor(strand)
[docs]
def setTurtlePurple(t):
t.setColorAt(purple, Purple())
t.setColor(purple)
[docs]
def setTurtleWhite(t):
t.setColorAt(white, White())
t.setColor(white)
[docs]
def setTurtleBrokenWhite(t):
t.setColorAt(brokenWhite, BrokenWhite())
t.setColor(brokenWhite)
[docs]
def setTurtleYellow(t):
t.setColorAt(yellow, Yellow())
t.setColor(yellow)
[docs]
class ColorFuncs(Node):
def __init__(self):
Node.__init__(self)
self.add_output(name="colorFuncs", interface=ISequence)
def __call__(self, inputs):
return (
setTurtleButton,
setTurtleFruit,
setTurtlePed,
setTurtlePetal,
setTurtleReceptacle,
setTurtleSepal,
setTurtleGreen,
setTurtleBlue,
setTurtlePink,
setTurtlePurple,
setTurtlePerlGrey,
setTurtleBrokenWhite,
setTurtleWhite,
)