matt-dray / pixeltrix

:space_invader::computer_mouse: R package: make pixel art interactively in a plot window, get a matrix, make a gif
Other
21 stars 0 forks source link

`n_states` can be "lost" when using `frame_pixels()` #18

Closed TimTaylor closed 1 year ago

TimTaylor commented 1 year ago

Will try and make this as reproducible as possible :sweat_smile:

  1. start with
    tmp <- frame_pixels(10L, 10L, n_states = 3L)
  2. click the top left pixel once.
  3. Esc.
  4. Add new frame.

Result = you lose a state (and thus colour will also change), i.e. n_states now equals 2.

If, however, you click the top left pixel twice in the first frame, the state is preserved.

Hope all this makes sense.

Session info ```r Session info ─────────────────────────────────────────────────────────────────────────────────── setting value version R version 4.2.2 (2022-10-31) os Fedora Linux 37 (Workstation Edition) system x86_64, linux-gnu ui RStudio language (EN) collate en_GB.UTF-8 ctype en_GB.UTF-8 tz Europe/London date 2022-12-14 rstudio 2022.07.2+576 Spotted Wakerobin (desktop) pandoc 2.14.0.3 @ /usr/libexec/rstudio/bin/pandoc/ (via rmarkdown) ─ Packages ─────────────────────────────────────────────────────────────────────────────────────── package * version date (UTC) lib source assertthat 0.2.1 2019-03-21 [2] CRAN (R 4.2.1) cachem 1.0.6 2021-08-19 [2] CRAN (R 4.2.1) callr 3.7.3 2022-11-02 [2] CRAN (R 4.2.1) cli 3.4.1 2022-09-23 [2] CRAN (R 4.2.1) colorspace 2.0-3 2022-02-21 [2] CRAN (R 4.2.1) CoprManager 0.4.0 2022-11-24 [4] local countrycode 1.4.0 2022-05-04 [2] CRAN (R 4.2.1) crayon 1.5.2 2022-09-29 [2] CRAN (R 4.2.1) curl 4.3.3 2022-10-06 [2] CRAN (R 4.2.1) data.table 1.14.6 2022-11-16 [2] CRAN (R 4.2.2) DBI 1.1.3 2022-06-18 [2] CRAN (R 4.2.1) devtools * 2.4.5 2022-10-11 [2] CRAN (R 4.2.1) digest 0.6.30 2022-10-18 [2] CRAN (R 4.2.1) dotCall64 1.0-2 2022-10-03 [2] CRAN (R 4.2.1) dplyr 1.0.10 2022-09-01 [2] CRAN (R 4.2.1) ellipsis 0.3.2 2021-04-29 [2] CRAN (R 4.2.1) evaluate 0.18 2022-11-07 [2] CRAN (R 4.2.1) fansi 1.0.3 2022-03-24 [2] CRAN (R 4.2.1) fastmap 1.1.0 2021-01-25 [2] CRAN (R 4.2.1) fields 14.1 2022-08-12 [2] CRAN (R 4.2.1) fs 1.5.2 2021-12-08 [2] CRAN (R 4.2.1) generics 0.1.3 2022-07-05 [2] CRAN (R 4.2.1) ggplot2 3.4.0 2022-11-04 [2] CRAN (R 4.2.1) glue 1.6.2 2022-02-24 [2] CRAN (R 4.2.1) gridExtra 2.3 2017-09-09 [2] CRAN (R 4.2.1) gtable 0.3.1 2022-09-01 [2] CRAN (R 4.2.1) htmltools 0.5.4 2022-12-07 [2] CRAN (R 4.2.2) htmlwidgets 1.5.4 2021-09-08 [2] CRAN (R 4.2.1) httpuv 1.6.6 2022-09-08 [2] CRAN (R 4.2.1) httr 1.4.4 2022-08-17 [2] CRAN (R 4.2.1) jsonlite 1.8.4 2022-12-06 [2] CRAN (R 4.2.2) knitr 1.41 2022-11-18 [2] CRAN (R 4.2.2) later 1.3.0 2021-08-18 [2] CRAN (R 4.2.1) lifecycle 1.0.3 2022-10-07 [2] CRAN (R 4.2.1) lubridate 1.9.0 2022-11-06 [2] CRAN (R 4.2.1) magrittr 2.0.3 2022-03-30 [2] CRAN (R 4.2.1) maps 3.4.1 2022-10-30 [2] CRAN (R 4.2.1) memoise 2.0.1 2021-11-26 [2] CRAN (R 4.2.1) mime 0.12 2021-09-28 [2] CRAN (R 4.2.1) miniUI 0.1.1.1 2018-05-18 [2] CRAN (R 4.2.1) munsell 0.5.0 2018-06-12 [2] CRAN (R 4.2.1) oai 0.4.0 2022-11-10 [2] CRAN (R 4.2.1) pillar 1.8.1 2022-08-19 [2] CRAN (R 4.2.1) pixeltrix * 0.1.1 2022-12-13 [1] Github (matt-dray/pixeltrix@d454979) pkgbuild 1.4.0 2022-11-27 [2] CRAN (R 4.2.2) pkgconfig 2.0.3 2019-09-22 [2] CRAN (R 4.2.1) pkgload 1.3.2 2022-11-16 [2] CRAN (R 4.2.2) plyr 1.8.8 2022-11-11 [2] CRAN (R 4.2.2) prettyunits 1.1.1 2020-01-24 [2] CRAN (R 4.2.1) processx 3.8.0 2022-10-26 [2] CRAN (R 4.2.1) profvis 0.3.7 2020-11-02 [2] CRAN (R 4.2.1) promises 1.2.0.1 2021-02-11 [2] CRAN (R 4.2.1) ps 1.7.2 2022-10-26 [2] CRAN (R 4.2.1) purrr 0.3.5 2022-10-06 [2] CRAN (R 4.2.1) R6 2.5.1 2021-08-19 [2] CRAN (R 4.2.1) Rcpp 1.0.9 2022-07-08 [2] CRAN (R 4.2.1) remotes 2.4.2 2021-11-30 [2] CRAN (R 4.2.1) rlang 1.0.6 2022-09-24 [2] CRAN (R 4.2.1) rmarkdown 2.18 2022-11-09 [2] CRAN (R 4.2.1) rstudioapi 0.14 2022-08-22 [2] CRAN (R 4.2.1) scales 1.2.1 2022-08-20 [2] CRAN (R 4.2.1) sessioninfo 1.2.2 2021-12-06 [2] CRAN (R 4.2.1) shiny 1.7.3 2022-10-25 [2] CRAN (R 4.2.1) socialmixr 0.2.0 2022-10-27 [2] CRAN (R 4.2.1) spam 2.9-1 2022-08-07 [2] CRAN (R 4.2.1) stringi 1.7.8 2022-07-11 [2] CRAN (R 4.2.1) stringr 1.5.0 2022-12-02 [2] CRAN (R 4.2.2) tibble 3.1.8 2022-07-22 [2] CRAN (R 4.2.1) tidyselect 1.2.0 2022-10-10 [2] CRAN (R 4.2.1) timechange 0.1.1 2022-11-04 [2] CRAN (R 4.2.1) urlchecker 1.0.1 2021-11-30 [2] CRAN (R 4.2.1) usethis * 2.1.6 2022-05-25 [2] CRAN (R 4.2.1) utf8 1.2.2 2021-07-24 [2] CRAN (R 4.2.1) vctrs 0.5.1 2022-11-16 [2] CRAN (R 4.2.2) viridis 0.6.2 2021-10-13 [2] CRAN (R 4.2.1) viridisLite 0.4.1 2022-08-22 [2] CRAN (R 4.2.1) wpp2017 1.2-3 2020-02-10 [2] CRAN (R 4.2.1) xfun 0.35 2022-11-16 [2] CRAN (R 4.2.2) xml2 1.3.3 2021-11-30 [2] CRAN (R 4.2.1) xtable 1.8-4 2019-04-21 [2] CRAN (R 4.2.1) yaml 2.3.6 2022-10-18 [2] CRAN (R 4.2.1) ympes * 0.2.1.9000 2022-12-08 [1] local [1] /home/tim/R/x86_64-redhat-linux-gnu-library/4.2 [2] /usr/local/lib/R/library [3] /usr/lib64/R/library [4] /usr/share/R/library ────────────────────────────────────────────────────────────────────────────────────────────────── ```
matt-dray commented 1 year ago

Thank you, whoops. The issue: animate_pixels() creates the first frame via click_pixels(), then passes that matrix to edit_pixels(); edit_pixels() was simply detecting the number of states from the matrix it read, instead of recalling what n_states was.