Patch title: Release 96 bulk changes
Abstract:
File: /pliant/graphic/layout/style.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/unsafe.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/color/rgb888.pli"
module "/pliant/graphic/vector/font.pli"
module "/pliant/graphic/image/prototype.pli"


public
  type LayoutColor
    field Link:ColorGamut gamut
    field Address value_or_address

function destroy c
  arg_w LayoutColor c
  if (exists c:gamut) and c:gamut:pixel_size>Address:size
    memory_free c:value_or_address
    
function copy src dest
  arg LayoutColor src ; arg_w LayoutColor dest
  if (exists dest:gamut) and dest:gamut:pixel_size>Address:size
    memory_free dest:value_or_address
  dest gamut :> src gamut
  if (exists dest:gamut) and dest:gamut:pixel_size>Address:size
    dest value_or_address := memory_allocate dest:gamut:pixel_size addressof:dest
    memory_copy src:value_or_address dest:value_or_address dest:gamut:pixel_size
  else
    dest value_or_address := src value_or_address


gvar Link:ColorGamut layout_gamut_rgb :> color_gamut "rgb"

function 'cast LayoutColor' rgb -> c
  arg ColorRGB888 rgb ; arg LayoutColor c
  extension
  if (exists c:gamut) and c:gamut:pixel_size>Address:size
    memory_free c:value_or_address
  c gamut :> layout_gamut_rgb
  memory_copy addressof:rgb (addressof c:value_or_address) 3


export 'cast LayoutColor'


#--------------------------------------------------------------------------


public

  type LayoutStyleChars
    field (Array Link:Font) font
    field Float size
    field Float slide
    field LayoutColor color
    field CBool bold
    field CBool italic
    field CBool fixed
  
  type LayoutStylePara
    field CBool wrap
    field CBool justify
    field Int align
    field Float head_padding tail_padding
  
  type LayoutStyleText
    field LayoutStyleChars text
    field LayoutStylePara para
  
  
  type LayoutArea
    field Float x0 y0 x1 y1

  type LayoutStyleLabel
    field Link:Font font
    field Float size
    field LayoutColor color
  
  type LayoutStyleRectangle
    field Float x0 y0 x1 y1 # update from padded content
    field Float round
    field LayoutColor color
  
  type LayoutStyleBox
    field LayoutArea padding
    field Link:ImagePrototype model
    field Int mode # 0 = no box , 1 = r1 , 2 = r1+r2 or r1-r2, , 3 = fixed size model , 4 = fit box model , 5 = xy stretch model , 6 = center stretch model
    field LayoutStyleRectangle r1
    field LayoutStyleRectangle r2
  
  type LayoutStyleButton
    field LayoutStyleBox box
    field LayoutStyleLabel text
    field LayoutStyleLabel inside_key # inside label
    field Float spacing # between label and outside key
    field LayoutStyleLabel outside_key # outside label key
  
  type LayoutStyleButton2
    field LayoutStyleButton standard
    field LayoutStyleButton over
  
  type LayoutStyleButton3
    field LayoutStyleButton standard
    field LayoutStyleButton over
    field LayoutStyleButton inactive
    field LayoutStyleButton selected
    field LayoutStyleButton selected_over
  
  
  type LayoutStyleInput
    field LayoutStyleBox box
    field LayoutStyleLabel text
  
  type LayoutStyleInput2
    field LayoutStyleInput standard
    field LayoutStyleInput focus
  
  
  type LayoutStyleTable
    field LayoutStyleBox box # outside border of the table
    field LayoutStyleBox header
    field LayoutStyleBox cell
  
  
  type LayoutStyleFocus
    field Float thickness
    field LayoutColor color
  
  
  type LayoutStyle
    field LayoutStyleText standard
    field LayoutStyleText header
    field LayoutStyleText title
    field LayoutStyleButton2 link
    field LayoutStyleButton3 button
    field LayoutStyleInput2 input
    field LayoutStyleInput2 select
    field LayoutStyleTable table
    field LayoutStyleFocus focus