Skip to content

Commit

Permalink
change overall layout
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianHicks committed Feb 21, 2020
1 parent 3572e0e commit 3708540
Showing 1 changed file with 98 additions and 92 deletions.
190 changes: 98 additions & 92 deletions src/Main.elm
Expand Up @@ -25,7 +25,7 @@ import Wave exposing (Wave)
type alias Model =
{ -- OPTIONS
options : Options
, previousOptions : Maybe Options
, draftOptions : Options

-- DISPLAY OPTIONS
, dimUnknown : Bool
Expand All @@ -49,6 +49,7 @@ type Msg
| Stop
| Step
| KeepRunning
| Reset
| ToggleDimUnknown
| SetRandomSeed Random.Seed

Expand All @@ -63,7 +64,7 @@ init _ =
}
in
( { options = options
, previousOptions = Nothing
, draftOptions = options
, dimUnknown = True
, running = False
, wave =
Expand Down Expand Up @@ -125,6 +126,19 @@ update msg model =
else
( model, Cmd.none )

Reset ->
( { model
| wave =
Wave.load
{ windowSize = model.options.windowSize
, waveSize = model.options.waveSize
, hash = imageHash
}
model.options.image
}
, Cmd.none
)

ToggleDimUnknown ->
( { model | dimUnknown = not model.dimUnknown }, Cmd.none )

Expand Down Expand Up @@ -157,7 +171,9 @@ view model =
[ Reset.meyerV2
, Reset.borderBoxV201408
, h1 [ Html.text "Wave Function Collapse" ]
, h2 [ Html.text "Source Image" ]
, h2 [ Html.text "Options" ]
, h3 [ Html.text "View Options" ]
, Html.p [] [ Html.button [ Events.onClick ToggleDimUnknown ] [ Html.text "Toggle Dimming Uknown Cells (debug)" ] ]

-- , [ ( "Waves", Image.waves )
-- , ( "Bars", Image.bars )
Expand All @@ -178,23 +194,6 @@ view model =
-- |> Html.p []
-- )
-- |> Html.div []
, Image.view [] model.options.image
, Html.details []
[ Html.summary [] [ Html.text "Windows" ]

-- , model.windows
-- |> Grid.view
-- (\window ->
-- Html.div
-- [ css
-- [ Css.border3 (Css.px 1) Css.solid (Css.hex "000")
-- , Css.display Css.inlineBlock
-- , Css.margin (Css.px 5)
-- ]
-- ]
-- [ Image.view [] window ]
-- )
]
, h2 [ Html.text "Wave" ]
, Html.p []
[ if model.running then
Expand All @@ -203,83 +202,78 @@ view model =
else
Html.button [ Events.onClick Start ] [ Html.text "Start" ]
, Html.button [ Events.onClick Step ] [ Html.text "Step" ]
, Html.button [ Events.onClick Reset ] [ Html.text "Reset" ]
]
, Html.div [ css [ Css.displayFlex ] ]
[ Image.view [] model.options.image
, Wave.view
(\windows cell ->
case cell of
Wave.Collapsed tile ->
case Dict.get tile windows |> Maybe.andThen Grid.topLeft of
Just color ->
Image.viewColor [] color

Nothing ->
Html.text "invalid index"

Wave.Open indexes ->
let
{ reds, blues, greens, opacities } =
indexes
|> Set.toList
|> List.filterMap (\i -> Dict.get i windows)
|> List.filterMap Grid.topLeft
|> List.foldl
(\color soFar ->
let
rgba =
Color.toRGBA color
in
{ reds = rgba.red :: soFar.reds
, blues = rgba.blue :: soFar.blues
, greens = rgba.green :: soFar.greens
, opacities = Color.opacityToFloat rgba.alpha :: soFar.opacities
}
)
{ reds = [], greens = [], blues = [], opacities = [] }

average items =
List.sum items / toFloat (List.length items)
in
if Set.isEmpty indexes then
Html.td
[ css
[ Css.lineHeight (Css.px 10)
, Css.fontSize (Css.px 10)
, Css.textAlign Css.center
]
, Attributes.width 10
, Attributes.height 10
]
[ Html.text "×" ]

-- , Html.p []
-- [ Html.button [ Events.onClick (Reset { width = 2, height = 2 }) ] [ Html.text "Reset (2x2)" ]
-- , Html.button [ Events.onClick (Reset { width = 5, height = 5 }) ] [ Html.text "Reset (5x5)" ]
-- , Html.button [ Events.onClick (Reset { width = 10, height = 10 }) ] [ Html.text "Reset (10x10)" ]
-- , Html.button [ Events.onClick (Reset { width = 20, height = 20 }) ] [ Html.text "Reset (20x20)" ]
-- , Html.button [ Events.onClick (Reset { width = 50, height = 50 }) ] [ Html.text "Reset (50x50)" ]
-- ]
, Html.p [] [ Html.button [ Events.onClick ToggleDimUnknown ] [ Html.text "Toggle Dimming Uknown Cells (debug)" ] ]
, Wave.view
(\windows cell ->
case cell of
Wave.Collapsed tile ->
case Dict.get tile windows |> Maybe.andThen Grid.topLeft of
Just color ->
Image.viewColor [] color

Nothing ->
Html.text "invalid index"

Wave.Open indexes ->
let
{ reds, blues, greens, opacities } =
indexes
|> Set.toList
|> List.filterMap (\i -> Dict.get i windows)
|> List.filterMap Grid.topLeft
|> List.foldl
(\color soFar ->
let
rgba =
Color.toRGBA color
in
{ reds = rgba.red :: soFar.reds
, blues = rgba.blue :: soFar.blues
, greens = rgba.green :: soFar.greens
, opacities = Color.opacityToFloat rgba.alpha :: soFar.opacities
}
else
Image.viewColor
[ Attributes.attribute "data-count" (String.fromInt (Set.size indexes))
, style "opacity"
(if model.dimUnknown then
"0.5"

else
"1"
)
{ reds = [], greens = [], blues = [], opacities = [] }

average items =
List.sum items / toFloat (List.length items)
in
if Set.isEmpty indexes then
Html.td
[ css
[ Css.lineHeight (Css.px 10)
, Css.fontSize (Css.px 10)
, Css.textAlign Css.center
]
, Attributes.width 10
, Attributes.height 10
]
[ Html.text "×" ]

else
Image.viewColor
[ Attributes.attribute "data-count" (String.fromInt (Set.size indexes))
, style "opacity"
(if model.dimUnknown then
"0.5"

else
"1"
(Color.fromRGBA
{ red = average reds
, green = average greens
, blue = average blues
, alpha = Color.customOpacity (average opacities)
}
)
]
(Color.fromRGBA
{ red = average reds
, green = average greens
, blue = average blues
, alpha = Color.customOpacity (average opacities)
}
)
)
model.wave
)
model.wave
]
]


Expand All @@ -302,6 +296,18 @@ h2 contents =
[ css
[ Css.fontSize (Css.rem 1.25)
, Css.lineHeight (Css.rem 1.5)
, Css.fontWeight Css.bold
]
]
contents


h3 : List (Html msg) -> Html msg
h3 contents =
Html.h3
[ css
[ Css.fontSize (Css.rem 1.1)
, Css.lineHeight (Css.rem 1.25)
]
]
contents

0 comments on commit 3708540

Please sign in to comment.