Files
Nim/tests/manyloc/named_argument_bug/gui.nim
2013-07-24 23:07:28 +02:00

45 lines
1.1 KiB
Nim

import
tri_engine/gfx/gl/primitive,
tri_engine/gfx/tex,
tri_engine/gfx/color,
tri_engine/math/rect,
tri_engine/math/vec
type
TWidgetLayer* = enum
wlBg = 100,
wlOverlap = 200,
wlMain = 300,
wlOverlay = 400,
wlCursor = 500
TWidgetLayerType = TWidgetLayer|int
TWidgetType* = enum
wtImg
PWidget* = ref object
`type`* : TWidgetType
layer* : TWidgetLayer
rect* : TRect
prim* : PPrimitive
const
baseZ = 5000
proc newWidget*(`type`: TWidgetType, layer: TWidgetLayerType, rect: TRect): PWidget =
new(result)
result.`type` = `type`
result.layer = layer
result.rect = rect
var verts = newVert(rect)
# This works because z is accessible at this scope.
#var z = baseZ + layer.int
#result.prim = newPrimitive(verts, z=z)
# Doesn't work, because the compiler looks for a symbol called z in this scope,
# but it should only check that it is the name of one of the params.
#result.prim = newPrimitive(verts, z=baseZ + layer.int)
# This doesn't work either.
result.prim = newPrimitive(verts, z=0)