   #   ACTION: add a postSetter which checks if @_drawOrder is set, and if so, THEN marks draw/drawArea changed
   @drawLayoutProperty
     size:
-      default: ps:1
-      preprocess: (v, previousValue) ->
-        pointLayout v, previousValue || defaultSizeLayout
+      default: "parentSize"
+      validate: (v) ->
+        if isString v
+          !!namedSizeLayouts[v]
+        else
+          true
+
+      preprocess: getSizePointLayout
 
   @layoutProperty
     ###


  defaultSizeLayout = new PointLayout ps: 1
  defaultLocationLayout = new PointLayout 0

  # TODO: size only is a draw/drawArea property IF drawOrder is set.
  #   NOTES:

{isInfiniteResult} = require './EpochLayout/Infinity'

{rgbColor, point, Point, rect, Rectangle, Matrix, matrix, identityMatrix, point0, point1, perimeter0, isPoint, perimeter} = Atomic
{namedPoints} = Point
{floor, ceil} = Math
{globalEpochCycle} = GlobalEpochCycle
{drawCacheManager} = DrawCacheManager
{PointLayout} = Layout
{pointLayout} = PointLayout

{
  each
