I can see your notebook. Must be some lag or something.
Anyway, later I'll put together a notebook to show you how I'd approach this. But I'll put a couple of thoughts here first.
When a result has some sort of error (something recognized by Mathematica as an incorrect usage, not just something that didn't work the way you expected), there will typically be an associated message. These can show up in a few places:
- The messages window: in the menu bar, Window -> Messages
- A little red ellipsis near the bracket for the output cell where the error happened
- If the output itself has a red outline, you can hover over it to see the message
So, for your failed Graphics output, hover over it and you'll see a message that explains the failure. In your case it is: "FullForm is not a Graphics primitive or directive." That's a pretty good clue, and it suggests that the problem is with this line:
orgColorRGB = x // FullForm
So, a quick comment about FullForm and related *Form functions. These are used to inspect data structures. They are helpful for debugging. But they aren't intended to be part of the data structure (at least I have never done that, and I can't think of a reason to do so). What you've done here is assigned the variable orgColorRGB to FullForm[x], and so if x was RGBColor[0,0,0] then your orgColorRGB is really FullForm[RGBColor[0,0,0]]. Now this data structure will display fine (it should, that's the purpose of FullForm), but it's no longer a data structure that is recognized as a color by Graphics. FullForm structures don't display as FullForm[...], because that would actually be distracting and detract from the usefulness of FullForm. So, if you evaluate FullForm[orgColorRGB], it will just appear like a RGBColor structure in the output. But you can evaluate Head[orgColorRGB] and see that it's a FullForm.
I think that you are somehow thinking that you need to use FullForm to get at the "numerical represenation" of a color. But you don't. Just because colors display as little colored squares does not mean that there is some other representation being used. It's just a display thing. When you use your ColorSetter, you're setting x to an RGBColor data structure. You don't need to do anything more to x to use it as a color. You would only apply FullForm to it to see the raw data. FullForm doesn't actually do any transformation to x itself.
And maybe I'm beating a dead horse, but this isn't all that mysterious. Every text letter you see on the screen right now, or in any software application, is just a representation of some binary data. That binary data is there, it's just hidden for our convenience by the various interfaces we use. Mathematica is extending that idea to "higher level" data structures. Evaluate Head[1/2] in one cell and just 1/2 in another cell. Mathematica has a special way to display fractions, but that doesn't mean that you need to transform 1/2 to some special "numerical form" to use it as a number. Try assigning a variable to FullForm[1/2] and then try to add that variable to 1. Mathematica doesn't know how to add FullForms to Integers. But of course 1+1/2 will output a new fraction just fine.
On to comment 2: When prototyping something, I'd suggest you work incrementally. Do one step in one input cell and evaluate that. Tweak it until that bit works, and then move on to a new input cell. You have a whole bunch of expressions in one input cell. It makes it difficult to trace the outputs to the inputs. I'll demonstrate this when I have a moment to put together a demo notebook.
Comment 3: You might still be early in the prototyping stage, so maybe you would have gotten this eventually, but my suggestion is that you bundle up your logic for creating complementary colors into a nice, reusable function. Again, I'll try to show that later.