Giter Club home page Giter Club logo

rx's Introduction


        โ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ โ–ˆโ–ˆ
         โ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ  โ–ˆโ–ˆโ–ˆ
         โ–ˆโ–ˆ     โ–ˆโ–ˆ โ–ˆโ–ˆ
         โ–ˆโ–ˆ    โ–ˆโ–ˆ   โ–ˆโ–ˆ


    `rx` is a modern and minimalist pixel editor.

  Designed with great care and love
    with pixel artists and animators in mind.

OVERVIEW

  `rx` is an extensible, modern and minimalist pixel editor implemented
  in rust[0]. rx is free software, licensed under the GPLv3.

  Most of the information on how to use rx is on the website:
  https://rx.cloudhead.io. There, you can also find a user guide
  (https://rx.cloudhead.io/guide.html), installation instructions,
  and binary download links.

  For discussions, join the community: https://rx.cloudhead.io/#community.

  To build rx from source, see the build sections below.

  Once inside rx, enter the `:help` command to get a list of key bindings
  and commands.

  [0]: https://rust-lang.org

REQUIREMENTS

  At a minimum, OpenGL 3.3 support is required.

BUILD DEPENDENCIES

  * rust (https://www.rust-lang.org/tools/install)
  * cmake (https://cmake.org/download/)

  On macOS, `Xcode` and the `Xcode Command Line Tools` are required.
  The latter can be obtained by running `xcode-select --install`
  CMake can be installed with `brew install cmake`.

BUILD & INSTALLATION

  Before proceeding, make sure the BUILD DEPENDENCIES have been installed.

  Then, clone this repository and from its root, run:

    $ cargo install --locked --path .

  This will install rx under `~/.cargo/bin/rx`.  If you prefer a different
  install location, you can specify it via the `--root <prefix>` flag, where
  <prefix> is for example '/usr/local'.

CONTRIBUTING

  See the CONTRIBUTING file for details. Contributions are appreciated.

USAGE

  See the guide at https://rx.cloudhead.io/guide.html.

TROUBLESHOOTING

  If something isn't working like it's supposed to, there are various things
  you can do to debug the problem:

  * Run `rx` with verbose logging, by using the `-v` command-line flag. This
    will log errors from the underlying libraries that are usually suppressed,
    and will show debug output that might indicate what the problem is.
  * If `rx` is crashing, run it with `RUST_BACKTRACE=1` set in your environment
    to show a backtrace on crash.
  * It could be that the issue is related to your configuration - in that case
    the program can be run without loading the initialization script like so:

        rx -u -

LICENSE

  This software is licensed under the GPL. See the LICENSE file for more details.

COPYRIGHT

  (c) 2019 Alexis Sellier

rx's People

Contributors

anthonymikh avatar cleancut avatar cloudhead avatar cyborgpotato avatar dashaw92 avatar fbbdev avatar gabstv avatar herroftheland avatar jephron avatar kiwiyou avatar kstrafe avatar luciusmagn avatar monsieurlanza avatar neg4n avatar phrohdoh avatar pop avatar rbisewski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rx's Issues

crash on open with linux

cargo install --git https://github.com/cloudhead/rx --locked
 โ–ณ ~ RUST_BACKTRACE=full rx -u -
[2019-11-17T19:15:33Z INFO  rx] framebuffer size: 1280x720
[2019-11-17T19:15:33Z INFO  rx] hidpi factor: 2.2999980449676514
[2019-11-17T19:15:33Z INFO  rx::session] rx v0.2.0
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:378:21
stack backtrace:
   0:     0x556f5ce1c524 - backtrace::backtrace::libunwind::trace::hda41dbcdfba36aa0
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.37/src/backtrace/libunwind.rs:88
   1:     0x556f5ce1c524 - backtrace::backtrace::trace_unsynchronized::h1a8d6e1f8cb3f5d4
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.37/src/backtrace/mod.rs:66
   2:     0x556f5ce1c524 - std::sys_common::backtrace::_print_fmt::h610c4127487e10da
                               at src/libstd/sys_common/backtrace.rs:76
   3:     0x556f5ce1c524 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h0722dc552e01bd1d
                               at src/libstd/sys_common/backtrace.rs:60
   4:     0x556f5ce3d21c - core::fmt::write::h01edf6dd68a42c9c
                               at src/libcore/fmt/mod.rs:1030
   5:     0x556f5ce19087 - std::io::Write::write_fmt::hf15985f193f03c04
                               at src/libstd/io/mod.rs:1412
   6:     0x556f5ce1e7d5 - std::sys_common::backtrace::_print::hd8d5d08a1795e743
                               at src/libstd/sys_common/backtrace.rs:64
   7:     0x556f5ce1e7d5 - std::sys_common::backtrace::print::hf89a79e3921a2366
                               at src/libstd/sys_common/backtrace.rs:49
   8:     0x556f5ce1e7d5 - std::panicking::default_hook::{{closure}}::h3a8f42beb3bb8ae3
                               at src/libstd/panicking.rs:196
   9:     0x556f5ce1e4c6 - std::panicking::default_hook::h8f803b0bc31a5c37
                               at src/libstd/panicking.rs:210
  10:     0x556f5ce1ee75 - std::panicking::rust_panic_with_hook::h825f041245da8739
                               at src/libstd/panicking.rs:473
  11:     0x556f5ce1ea12 - std::panicking::continue_panic_fmt::hbe0378e33481e81b
                               at src/libstd/panicking.rs:380
  12:     0x556f5ce1e906 - rust_begin_unwind
                               at src/libstd/panicking.rs:307
  13:     0x556f5ce3931a - core::panicking::panic_fmt::h527855ce0bc891f6
                               at src/libcore/panicking.rs:85
  14:     0x556f5ce39259 - core::panicking::panic::h2f49f09cf859b728
                               at src/libcore/panicking.rs:49
  15:     0x556f5cd5f86f - wgpu_request_adapter
  16:     0x556f5cd5a4b7 - wgpu::Adapter::request::hc06a386463c80c30
  17:     0x556f5cc265bc - rx::init::h3fab2ab361ffb234
  18:     0x556f5cc343e8 - rx::main::ha967765a9e31cdfc
  19:     0x556f5cc1d013 - std::rt::lang_start::{{closure}}::hc4ee2151b7bf7afb
  20:     0x556f5ce1e8a3 - std::rt::lang_start_internal::{{closure}}::ha04574f12d97cbe2
                               at src/libstd/rt.rs:49
  21:     0x556f5ce1e8a3 - std::panicking::try::do_call::h7c2a8488f72db90c
                               at src/libstd/panicking.rs:292
  22:     0x556f5ce214fa - __rust_maybe_catch_panic
                               at src/libpanic_unwind/lib.rs:80
  23:     0x556f5ce1f36d - std::panicking::try::hc3a9b5da4250385d
                               at src/libstd/panicking.rs:271
  24:     0x556f5ce1f36d - std::panic::catch_unwind::hf27600bf8c37809a
                               at src/libstd/panic.rs:394
  25:     0x556f5ce1f36d - std::rt::lang_start_internal::h409d4f2fe51133b0
                               at src/libstd/rt.rs:48
  26:     0x556f5cc34a22 - main
  27:     0x7f637cacab97 - __libc_start_main
  28:     0x556f5cc1b2ca - _start
  29:                0x0 - <unknown>

Modifier keys + different keyboard layouts causing issues with keymappings

Related to #18

Windows 10, compiled with 1.38 stable. (--vulkan feature flag)

rx does not go into command mode when writing : using a Swedish/Nordic keyboard layout (Shift + Period) and instead zooms in one level.

It seems to recieve a colon in the RecievedCharacter event, but the KeyboardInput contains a period.

Logs:

[2019-09-30T13:57:01Z DEBUG rx] event: KeyboardInput(KeyboardInput { state: Pressed, key: Some(Shift), modifiers: ModifiersState { shift: true, ctrl: false, alt: false, meta: false } })
[2019-09-30T13:57:01Z DEBUG rx::session] KeyboardInput { state: Pressed, key: Some(Shift), modifiers: ModifiersState { shift: true, ctrl: false, alt: false, meta: false } }
[2019-09-30T13:57:01Z DEBUG rx::session] command: BrushSet(Multi)
[2019-09-30T13:57:02Z DEBUG rx] event: KeyboardInput(KeyboardInput { state: Pressed, key: Some(Period), modifiers: ModifiersState { shift: true, ctrl: false, alt: false, meta: false } })
[2019-09-30T13:57:02Z DEBUG rx] event: ReceivedCharacter(':')
[2019-09-30T13:57:02Z DEBUG rx::session] KeyboardInput { state: Pressed, key: Some(Period), modifiers: ModifiersState { shift: true, ctrl: false, alt: false, meta: false } }
[2019-09-30T13:57:02Z DEBUG rx::session] command: Zoom(Incr)
[2019-09-30T13:57:02Z DEBUG rx::session] zoom: 1 -> 2
[2019-09-30T13:57:02Z DEBUG rx] event: KeyboardInput(KeyboardInput { state: Released, key: Some(Period), modifiers: ModifiersState { shift: true, ctrl: false, alt: false, meta: false } })
[2019-09-30T13:57:02Z DEBUG rx::session] KeyboardInput { state: Released, key: Some(Period), modifiers: ModifiersState { shift: true, ctrl: false, alt: false, meta: false } }
[2019-09-30T13:57:02Z DEBUG rx] event: KeyboardInput(KeyboardInput { state: Released, key: Some(Shift), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
[2019-09-30T13:57:02Z DEBUG rx::session] KeyboardInput { state: Released, key: Some(Shift), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } }
[2019-09-30T13:57:02Z DEBUG rx::session] command: BrushUnset(Multi)

Linux crash on many frames opened

Opened ~20 frames with :f/clone to draw a simple snake, used without savings, editor crashed
trace:

thread 'main' panicked at 'assertion failed: `(left == right)`  
  left: `Ok(false)`,  
 right: `Ok(true)`: GPU got stuck on a frame (image 2) :(', /home/nikto_b/.cargo/registry  /src/github.com-1ecc6299db9ec823/wgpu-native-0.3.3/src/swap_chain.rs:190:5  
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.  
thread 'main' panicked at 'assertion failed: `(left == right)`  
  left: `Ok(false)`,  
 right: `Ok(true)`: GPU got stuck :(', /home/nikto_b/.cargo/registry/src/github.com-  1ecc6299db9ec823/wgpu-native-0.3.3/src/device.rs:204:13  
stack backtrace:  
   0:     0x55c44b312064 - backtrace::backtrace::libunwind::trace::h9c615d6efbf938f6  
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.37  /src/backtrace/libunwind.rs:88  
   1:     0x55c44b312064 - backtrace::backtrace::trace_unsynchronized::hfaa1ce1a28b26657  
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.37  /src/backtrace/mod.rs:66  
   2:     0x55c44b312064 - std::sys_common::backtrace::_print_fmt::h1b66ca12d17b932b  
                               at src/libstd/sys_common/backtrace.rs:77  
   3:     0x55c44b312064 - <std::sys_common::backtrace::_print::DisplayBacktrace as   core::fmt::Display>::fmt::hb788f286135c56c2  
                               at src/libstd/sys_common/backtrace.rs:61  
   4:     0x55c44b332e6c - core::fmt::write::h07fe3dc5621915ed  
                               at src/libcore/fmt/mod.rs:1028  
   5:     0x55c44b30ef37 - std::io::Write::write_fmt::h01232d256c58655a  
                               at src/libstd/io/mod.rs:1412  
   6:     0x55c44b31433e - std::sys_common::backtrace::_print::h28f8e2b4d9e94458  
                               at src/libstd/sys_common/backtrace.rs:65  
   7:     0x55c44b31433e - std::sys_common::backtrace::print::hd186282d73d3e408  
                               at src/libstd/sys_common/backtrace.rs:50  
   8:     0x55c44b31433e - std::panicking::default_hook::{{closure}}::h924d5d525cfaa28b  
                               at src/libstd/panicking.rs:189  
   9:     0x55c44b314041 - std::panicking::default_hook::hcf10145036a31ca0  
                               at src/libstd/panicking.rs:206  
  10:     0x55c44b3149d5 - std::panicking::rust_panic_with_hook::h0d1ccf594ba2c25f  
                               at src/libstd/panicking.rs:469  
  11:     0x55c44b314572 - std::panicking::continue_panic_fmt::hd9914224a5c73476  
                               at src/libstd/panicking.rs:376  
  12:     0x55c44b3144cc - std::panicking::begin_panic_fmt::h21a179276bc3d2a5  
                               at src/libstd/panicking.rs:331  
  13:     0x55c44b23d284 -   wgpu_native::device::Device <gfx_backend_vulkan::Backend>::maintain::hb86857300ab924e6  
  14:     0x55c44b24b7c6 - wgpu_device_poll  
  15:     0x55c44b0f5ad8 - core::ptr::real_drop_in_place::h573d63d1ea18404b  
  16:     0x55c44b0f4985 - rx::platform::run::hbca45d375a106e3e  
  17:     0x55c44b0e42f7 - rx::init::h1770aa72b933b02c  
  18:     0x55c44b0f978c - rx::main::h02e3fd22fc5109fe  
  19:     0x55c44b0f4e53 - std::rt::lang_start::{{closure}}::h0d34df9be9aebcc3  
  20:     0x55c44b314403 - std::rt::lang_start_internal::{{closure}}::h9d93058f2363250f  
                               at src/libstd/rt.rs:48  
  21:     0x55c44b314403 - std::panicking::try::do_call::h3396b203c650aa3f  
                               at src/libstd/panicking.rs:288  
  22:     0x55c44b31705a - __rust_maybe_catch_panic  
                               at src/libpanic_unwind/lib.rs:80  
  23:     0x55c44b314ecd - std::panicking::try::hd95abb921899f84c  
                               at src/libstd/panicking.rs:267  
  24:     0x55c44b314ecd - std::panic::catch_unwind::h067f8f58c3aff594  
                               at src/libstd/panic.rs:396  
  25:     0x55c44b314ecd - std::rt::lang_start_internal::hc2ec29100191f803  
                               at src/libstd/rt.rs:47  
  26:     0x55c44b0f9a42 - main  
  27:     0x7faeecc09153 - __libc_start_main  
  28:     0x55c44b0e398e - _start  
  29:                0x0 - <unknown>  
thread panicked while panicking. aborting.  
[1]    2243857 illegal hardware instruction (core dumped)  rx  

System:
ArchLinux on Linux 5.4.0
Intel Corporation UHD Graphics 620 (rev 07)
sway version 1.2

keyboard nav

seems like I can't hold down the keyboard keys to scroll across frames. this makes it super tough to nav between frames when fixing mistakes. also a short cut to choose frames as a focus would be nice as when I zoom, it moves to the center axis for some reason?

Image corruption after resize

I'm seeing a curious corruption issue after resize on latest master (19a5db2).

Steps to reproduce:

  • Start rx - canvas size will be 128x128x1
  • Add at least 3 frames (minimum 4 total frames, 3 or less won't trigger the issue for me)
  • Run command :f/resize 20 20
  • Delete all additional frames (hit backspace 3 or more times)

Not sure whether the size of 20 has any special meaning. I can consistently reproduce the issue with 20; 33, 48, 64 didn't trigger it; 10, 21, 32 triggered it only some times.

I attached a short screencast. Best viewed at full resolution as the gif is heavily dithered ๐Ÿ˜„

screencast

name conflicts with rx

rx is already a well-known name ("receive-xmodem") as as such conflicts with the package when installed.

Consider changing the name to something that isn't currently conflicting, such as 'vx' or 'px'

Crash when opening a png with no alpha channel

$ RUST_BACKTRACE=1 rxeditor /tmp/screenshot.png 
INTEL-MESA: warning: Ivy Bridge Vulkan support is incomplete
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `3147264`,
 right: `4196352`: fatal: incorrect length for texel buffer', /home/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/rgx-0.1.1/src/core/mod.rs:581:9
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.35/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.35/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:47
   3: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:36
   4: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:200
   5: std::panicking::default_hook
             at src/libstd/panicking.rs:214
   6: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:477
   7: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:384
   8: std::panicking::begin_panic_fmt
             at src/libstd/panicking.rs:339
   9: rgx::core::Texture::fill
  10: rgx::core::Renderer::prepare
  11: rx::renderer::Renderer::update_views
  12: rx::init
  13: rx::main
  14: std::rt::lang_start::{{closure}}
  15: std::rt::lang_start_internal::{{closure}}
             at src/libstd/rt.rs:49
  16: std::panicking::try::do_call
             at src/libstd/panicking.rs:296
  17: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:80
  18: std::panicking::try
             at src/libstd/panicking.rs:275
  19: std::panic::catch_unwind
             at src/libstd/panic.rs:394
  20: std::rt::lang_start_internal
             at src/libstd/rt.rs:48
  21: main
  22: __libc_start_main
  23: _start
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

$ file /tmp/screenshot.png
/tmp/screenshot.png: PNG image data, 1366 x 768, 8-bit/color RGB, non-interlaced

When downscaled, it does not crash, but still fails to show the image

$ gm convert -scale 10% /tmp/screenshot.png /tmp/screenshots.png
$ RUST_BACKTRACE=1 rxeditor /tmp/screenshots.png 
INTEL-MESA: warning: Ivy Bridge Vulkan support is incomplete
[2019-08-27T17:14:47Z ERROR rx::session] Error loading path(s): invalid pixel buffer size
^C

Specifying a file to open at the command line forces zoom to 100%

I'm running a copy of rx installed with cargo install --git https://github.com/cloudhead/rx --tag v0.4.0 on Kubuntu Linux 16.04 LTS (64-bit) and I observe the following undesirable behaviour.

With the following in .rxrc in the current directory...

-- Set Cavernas tile size
f/resize 8 8
zoom 8.0

-- Work around the apparent inability to display "actual in-game size" and
-- "preferred editing size" simultaneously
map / :zoom 4.0
map m :zoom 16.0

-- Remap Enter to clone the last frame rather than inserting a blank one
map <return> :f/clone

-- Set Cavernas palette
p/clear
p/add #3e3d4c
p/add #5a5a63
p/add #847f7f
p/add #bcb19f
p/add #21263f
p/add #394071
p/add #4063b2
p/add #efe7ce
p/add #3a5339
p/add #6b7b39
p/add #84ad42
p/add #c0461f
p/add #6c4f40
p/add #a5845a
p/add #cead73
p/add #673347
  1. Running rx works as expected
  2. Running rx player.png obeys every command in .rxrc except the zoom 8.0 (whether or not player.png exists).

(Which suggests to me that specifying a file on the command line is causing it do something equivalent to injecting a zoom 1.0 after evaluating .rxrc.)

Does not compile on windows

Compilation fails on Windows 10.
Windows 10 Pro 1903
stable-x86_64-pc-windows-msvc (default)
rustc 1.37.0 (eae3437df 2019-08-13)

   Compiling rx v0.1.0 (https://github.com/cloudhead/rx#af68f1f3)
error[E0433]: failed to resolve: could not find `BaseDirectories` in `xdg`
  --> C:\Users\User\.cargo\git\checkouts\rx-bc40bbadcd2c4422\af68f1f\src\lib.rs:79:26
   |
79 |     let base_dirs = xdg::BaseDirectories::with_prefix("rx")?;
   |                          ^^^^^^^^^^^^^^^ could not find `BaseDirectories` in `xdg`

error[E0412]: cannot find type `BaseDirectories` in module `xdg`
   --> C:\Users\User\.cargo\git\checkouts\rx-bc40bbadcd2c4422\af68f1f\src\session.rs:248:21
    |
248 |     base_dirs: xdg::BaseDirectories,
    |                     ^^^^^^^^^^^^^^^ not found in `xdg`

error[E0412]: cannot find type `BaseDirectories` in module `xdg`
   --> C:\Users\User\.cargo\git\checkouts\rx-bc40bbadcd2c4422\af68f1f\src\session.rs:331:25
    |
331 |         base_dirs: xdg::BaseDirectories,
    |                         ^^^^^^^^^^^^^^^ not found in `xdg`

error: aborting due to 3 previous errors

Some errors have detailed explanations: E0412, E0433.
For more information about an error, try `rustc --explain E0412`.
error: failed to compile `rx v0.1.0 (https://github.com/cloudhead/rx#af68f1f3)`, intermediate artifacts can be found at `C:\Users\User\AppData\Local\Temp\cargo-installGlInKN`

Similar issue found in sanpii/effitask#8 (comment)

build install fails on mac catalina 10.15.2

after running cargo install --locked --path . from inside the rx repo folder,

error: `std::vec::Vec::<T>::new` is not yet stable as a const fn
  --> /.cargo/registry/src/github.com-1ecc6299db9ec823/nonempty-0.1.4/src/lib.rs:29:21
   |
29 |         NonEmpty(e, Vec::new())
   |                     ^^^^^^^^^^

error: aborting due to previous error

error: Could not compile `nonempty`.
warning: build failed, waiting for other jobs to finish...
error: failed to compile `rx v0.3.2 (/rx)`, intermediate artifacts can be found at `/rx/target`

Caused by:
  build failed

also the instructions in the readme seem to be more thorough than the instructions on the site

rx: unknown tool "sampler"

Version: v0.2.0 8b2d7ba

Steps to reproduce

  1. Remove config (~/.config/rx/init.rx);
  2. Start rx.

Result

rx doesn't start with following error message:

rx: unknown tool "sampler"

Workaround

It seems that problem is that rx generates invalid init.rx which contains following line:

map/n  <ctrl>        :tool sampler {:tool -}                   --  Sample color (hold)

Removing this line from init.rx fixes problem.

Gif export seems to only export colors in the current palette

Issue: When exporting as a gif, it seems that colors which aren't part of the palette end up not being in the final gif. Those pixels end up transparent or simply the wrong color.

How to reproduce: Open a png file with rx file.png where file.png is an image containing colors that aren't in the starting palette. Split into multiple frames, then export as a gif. Switch to a palette with the required colors, then export as a second gif. The first gif has missing colors, but the second gif is correct.

Space + Mouse drag not working.

Hi,
thank you for your work!
When I press space and I drag the mouse over the screen nothing happens.

Here are the logs:

2020-01-20 11:36:32,080 DEBUG [rx] event: CursorMoved { position: LogicalPosition { x: 956.0, y: 1085.0 } }
2020-01-20 11:36:32,272 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Pressed, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,272 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,272 DEBUG [rx::session] command: Tool(Pan(NotPanning))
2020-01-20 11:36:32,453 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,453 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,469 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,469 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,486 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,486 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,502 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,502 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,518 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,518 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,535 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,535 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,551 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,551 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,567 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,567 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,584 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,584 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,601 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,601 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,617 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,617 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,633 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,633 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,650 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,650 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,666 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,666 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,682 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,683 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,698 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,698 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,714 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,714 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,730 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,731 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,746 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,746 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,762 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,762 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,778 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,778 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,794 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,794 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,810 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,810 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,826 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,826 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,842 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,842 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,859 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,859 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,875 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,875 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,891 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,891 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,908 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,908 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,924 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,924 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,940 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,940 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,957 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,957 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,973 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Repeated, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,973 DEBUG [rx] event: ReceivedCharacter(' ')
2020-01-20 11:36:32,974 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Released, key: Some(Space), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:32,974 DEBUG [rx::session] command: ToolPrev
2020-01-20 11:36:33,323 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Pressed, key: Some(Unknown), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })
2020-01-20 11:36:33,429 DEBUG [rx] event: Focused(false)
2020-01-20 11:36:33,429 DEBUG [rx::session] state: Running -> Paused
2020-01-20 11:36:33,429 DEBUG [rx] event: KeyboardInput(KeyboardInput { state: Released, key: Some(Unknown), modifiers: ModifiersState { shift: false, ctrl: false, alt: false, meta: false } })

Let me know if you need more!

Running:
System: Gentoo Linux - (Linux 5.4.11)
Window Manager: Sway 1.2 - (Wayland)
Chipset/GPU: Intel UHD Graphics 630

macOS Mojave compile failure

error[E0658]: use of unstable library feature 'refcell_map_split' (see issue #51476)
    --> /Users/vanush/.cargo/registry/src/github.com-1ecc6299db9ec823/zerocopy-0.2.8/src/lib.rs:1056:9
     |
1056 |         Ref::map_split(self, |slice| <[u8]>::split_at(slice, mid))
     |         ^^^^^^^^^^^^^^

error[E0658]: use of unstable library feature 'refcell_map_split' (see issue #51476)
    --> /Users/vanush/.cargo/registry/src/github.com-1ecc6299db9ec823/zerocopy-0.2.8/src/lib.rs:1064:9
     |
1064 |         RefMut::map_split(self, |slice| <[u8]>::split_at_mut(slice, mid))
     |         ^^^^^^^^^^^^^^^^^

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0658`.
error: Could not compile `zerocopy`.
warning: build failed, waiting for other jobs to finish...
error: failed to compile `rx v0.2.0 (https://github.com/cloudhead/rx?tag=v0.2.0#a296ebf4)`, intermediate artifacts can be found at `/var/folders/tk/l2138q8x2yb6qxf0b3fvgbzm0000gn/T/cargo-installp0AR53`

debug does not play nice with checker

I noticed some strange behavior today when checker and deubg are both enabled.

Steps to reproduce:
1๏ธโƒฃ Set checker = true and debug = true in your init.rx (or similar) config file. You can also set these in a running session.
2๏ธโƒฃ Open rx.
3๏ธโƒฃ Using the arrow keys navigate up and down.
๐Ÿ”ณ Notice that the edit window and checker patterns go in opposite directions.

I can take a look at this when I get a chance. If you have any pointers on where the problem/fix might be I would appreciate the direction.

error: failed to run custom build command for `glfw-sys v3.3.0`

I am trying to build on FreeBSD, but I am getting this:

   Compiling gl v0.14.0
     Running `/usr/local/bin/rustc --crate-name build_script_build /wrkdirs/usr/ports/graphics/rx/work/rx-0.3.2/cargo-crates/gl-0.14.0/build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=2 -C metadata=20095f3cdbe4bebc -C extra-filename=-20095f3cdbe4bebc --out-dir /wrkdirs/usr/ports/graphics/rx/work/target/release/build/gl-20095f3cdbe4bebc -L dependency=/wrkdirs/usr/ports/graphics/rx/work/target/release/deps --extern gl_generator=/wrkdirs/usr/ports/graphics/rx/work/target/release/deps/libgl_generator-e6d95cc30510f64d.rlib --cap-lints allow -C linker=cc -C link-arg=-L/usr/local/lib -C link-arg=-fstack-protector-strong`
error: failed to run custom build command for `glfw-sys v3.3.0`

There is no explanation what went wrong in the log.

edg32 palette link broken

This isn't a bug in the rx program itself, but I found an issue with the website and am not sure where to report it. On the website, clicking the link for the edg32 palette results in an access denied message.

ctrl-to-sample broken on windows

hi, love this software!
the ctrl keyboard shortcut for sampler tool does not seem to respond on windows. The brush tool just keeps being active.
Ill have some time to investigate it myself tomorrow, but for now I post about it here.
tested with:
rx 0.4.0
AND
rx master

rustup show

Default host: x86_64-pc-windows-msvc
rustup home:  C:\Users\User\.rustup

installed toolchains
--------------------

stable-x86_64-pc-windows-msvc
nightly-x86_64-pc-windows-msvc (default)

active toolchain
----------------

nightly-x86_64-pc-windows-msvc (default)
rustc 1.43.0-nightly (442ae7f04 2020-02-06)

cmake (not sure why I list that but why not)

cmake version 3.16.4

Not building on latest commit

Vulkan is setup and working on the system.

Arch Linux
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=rx-git
vulkan-intel 19.2.2-1
vulkan-headers 1:1.1.126-1

==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Updating rx git repo...
Fetching origin
==> Validating source files with sha512sums...
    rx ... Skipped
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Creating working copy of rx git repo...
Cloning into 'rx'...
done.
==> Starting pkgver()...
==> Updated version: rx-git 0.2.0+r108+ga2446d0-1
==> Sources are ready.
==> Making package: rx-git 0.2.0+r108+ga2446d0-1 (Mon 04 Nov 2019 06:04:59 PM EST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> WARNING: Using existing $srcdir/ tree
==> Starting pkgver()...
==> Removing existing $pkgdir/ directory...
==> Starting build()...
error: Package `rx v0.2.0 (/home/parker/.cache/yay/rx-git/src/rx)` does not have these features: `vulkan`
==> ERROR: A failure occurred in build().
    Aborting...
Error making: rx-git

Rx shows black screen on i3

I installed rx with --features vulkan. After start, I get:

[2019-10-01T17:19:38Z WARN  rx::platform::backend] glfw: content scale isn't uniform: 0.7791411 x 0.7807377

The only thing I see is a black screen that I can't interact with (the -vv log is on pastebin).

I tried to interact with Rx nonetheless, following ReadMe instructions in hope that I'll be able to save a file to test if it works, but I get OutOfMemory before I get chance to do :w test.png.

I use i3, dual GPU intel/nvidia. Installed vulkan packages are

vulkan-icd-loader 1.1.121-1
vulkan-mesa-layer 19.1.7-1

Do you have any idea how to work around this?

vsync disabled results in OoM

Runs fine if I enable vsync.
This seems similar to other issues I have encountered on nvidia GPU's where there is no delay when vsync is disabled so it renders and queues frames way too fast until it ooms.
Quite possibly an issue with wgpu instead of rx, but I haven't investigated it at all.

Occurs on:
OS: Arch Linux
GPU: GTX 960
Driver: Nvidia proprietary driver, version 418
Backend: Vulkan

The validation errors repeat many times before hitting the panic, I omitted most of them.

[2019-08-25T10:44:59Z ERROR gfx_backend_vulkan] 
VALIDATION [VUID-VkSwapchainCreateInfoKHR-imageExtent-01274 (0)] : vkCreateSwapchainKHR() called with imageExtent = (850,1402), which is outside the bounds returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR(): currentExtent = (851,1402), minImageExtent = (851,1402), maxImageExtent = (851,1402). The Vulkan spec states: imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageExtent-01274)
object info: (type: DEVICE, hndl: 94080094017968)

[2019-08-25T10:44:59Z ERROR gfx_backend_vulkan] 
VALIDATION [UNASSIGNED-CoreValidation-DrawState-SwapchainTooManyImages (0)] : vkAcquireNextImageKHR: Application has already acquired the maximum number of images (0x1)
object info: (type: SWAPCHAIN_KHR, hndl: 11880)

[2019-08-25T10:44:59Z ERROR gfx_backend_vulkan] 
VALIDATION [VUID-VkSwapchainCreateInfoKHR-imageExtent-01274 (0)] : vkCreateSwapchainKHR() called with imageExtent = (850,1402), which is outside the bounds returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR(): currentExtent = (851,1402), minImageExtent = (851,1402), maxImageExtent = (851,1402). The Vulkan spec states: imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageExtent-01274)
object info: (type: DEVICE, hndl: 94080094017968)

[2019-08-25T10:44:59Z ERROR gfx_backend_vulkan] 
VALIDATION [UNASSIGNED-CoreValidation-DrawState-SwapchainTooManyImages (0)] : vkAcquireNextImageKHR: Application has already acquired the maximum number of images (0x1)
object info: (type: SWAPCHAIN_KHR, hndl: 11904)

[2019-08-25T10:44:59Z ERROR gfx_backend_vulkan] 
VALIDATION [VUID-VkSwapchainCreateInfoKHR-imageExtent-01274 (0)] : vkCreateSwapchainKHR() called with imageExtent = (850,1402), which is outside the bounds returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR(): currentExtent = (851,1402), minImageExtent = (851,1402), maxImageExtent = (851,1402). The Vulkan spec states: imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageExtent-01274)
object info: (type: DEVICE, hndl: 94080094017968)

[2019-08-25T10:44:59Z ERROR gfx_backend_vulkan] 
VALIDATION [UNASSIGNED-CoreValidation-DrawState-SwapchainTooManyImages (0)] : vkAcquireNextImageKHR: Application has already acquired the maximum number of images (0x1)
object info: (type: SWAPCHAIN_KHR, hndl: 11928)

[2019-08-25T10:44:59Z ERROR gfx_backend_vulkan] 
VALIDATION [VUID-VkSwapchainCreateInfoKHR-imageExtent-01274 (0)] : vkCreateSwapchainKHR() called with imageExtent = (850,1402), which is outside the bounds returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR(): currentExtent = (851,1402), minImageExtent = (851,1402), maxImageExtent = (851,1402). The Vulkan spec states: imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageExtent-01274)
object info: (type: DEVICE, hndl: 94080094017968)

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: OutOfMemory(OutOfHostMemory)', src/libcore/result.rs:999:5
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:47
   3: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:36
   4: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:200
   5: std::panicking::default_hook
             at src/libstd/panicking.rs:214
   6: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:477
   7: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:384
   8: rust_begin_unwind
             at src/libstd/panicking.rs:311
   9: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  10: core::result::unwrap_failed
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libcore/macros.rs:18
  11: core::result::Result<T,E>::unwrap
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libcore/result.rs:800
  12: wgpu_native::device::device_create_swap_chain
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-native-0.3.3/src/device.rs:1905
  13: wgpu_swap_chain_get_next_texture
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-native-0.3.3/src/swap_chain.rs:150
  14: wgpu::SwapChain::get_next_texture
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.3.0/src/lib.rs:1369
  15: rgx::core::SwapChain::next
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/rgx-0.1.0/src/core/mod.rs:1150
  16: rx::renderer::Renderer::frame
             at src/renderer.rs:265
  17: rx::init::{{closure}}::{{closure}}
             at ./src/lib.rs:157
  18: rx::FrameTimer::run
             at ./src/lib.rs:56
  19: rx::init::{{closure}}
             at ./src/lib.rs:156
  20: rx::platform::backend::Events::run::{{closure}}
             at ./src/platform/winit.rs:26
  21: winit::platform_impl::platform::sticky_exit_callback
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.20.0-alpha3/src/platform_impl/linux/mod.rs:656
  22: winit::platform_impl::platform::x11::EventLoop<T>::run_return
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.20.0-alpha3/src/platform_impl/linux/x11/mod.rs:285
  23: winit::platform_impl::platform::x11::EventLoop<T>::run
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.20.0-alpha3/src/platform_impl/linux/x11/mod.rs:382
  24: winit::platform_impl::platform::EventLoop<T>::run
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.20.0-alpha3/src/platform_impl/linux/mod.rs:603
  25: winit::event_loop::EventLoop<T>::run
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.20.0-alpha3/src/event_loop.rs:140
  26: rx::platform::backend::Events::run
             at ./src/platform/winit.rs:24
  27: rx::init
             at ./src/lib.rs:116
  28: rx::main
             at src/main.rs:16
  29: std::rt::lang_start::{{closure}}
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libstd/rt.rs:64
  30: std::rt::lang_start_internal::{{closure}}
             at src/libstd/rt.rs:49
  31: std::panicking::try::do_call
             at src/libstd/panicking.rs:296
  32: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:82
  33: std::panicking::try
             at src/libstd/panicking.rs:275
  34: std::panic::catch_unwind
             at src/libstd/panic.rs:394
  35: std::rt::lang_start_internal
             at src/libstd/rt.rs:48
  36: std::rt::lang_start
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libstd/rt.rs:64
  37: main
  38: __libc_start_main
  39: _start
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Release bindings for modifier keys are ignored in some cases

Under some conditions (apparently only when entering command line mode) release bindings for modifier keys (ctrl, shift) are not run. This results in the sampler tool remaining active or the brush remaining stuck in multi-mode (which could lead to damage or wasted work when the view is zoomed in on a single frame).

To reproduce (combinations given for my qwerty it layout):

  • Slice image or add some frames;
  • Type a colon (<shift>+.); exit the command line, multibrush will be active. Press and release <shift> to deactivate.
  • Type a colon with <ctrl> pressed (<ctrl>+<shift>+.); exit the command line, sampler tool will be active. Press b to bring back the brush. Pressing and releasing <ctrl> won't help because sampler/off reverts to the previous tool which right now is the sampler itself.

No backend found on macOS even with `metal` feature enabled

$ git rev-parse HEAD
0d9cf727eb755bddd0b2fdf78cfea9545ce91ff2

$ cargo --version
cargo 1.37.0 (9edd08916 2019-08-02)

$ rustc --version
rustc 1.37.0 (eae3437df 2019-08-13)

$ RUST_BACKTRACE=1 cargo run --features="metal"
    Finished dev [unoptimized + debuginfo] target(s) in 0.06s
     Running `target/debug/rx`
thread 'main' panicked at 'no backend found for this platform!', src/platform/dummy.rs:47:5
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /Users/vsts/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /Users/vsts/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:47
   3: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:36
   4: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:200
   5: std::panicking::default_hook
             at src/libstd/panicking.rs:214
   6: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:477
   7: std::panicking::begin_panic
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libstd/panicking.rs:411
   8: rx::platform::backend::init
             at src/platform/dummy.rs:47
   9: rx::platform::init
             at src/platform/mod.rs:21
  10: rx::init
             at ./src/lib.rs:73
  11: rx::main
             at src/main.rs:17
  12: std::rt::lang_start::{{closure}}
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libstd/rt.rs:64
  13: std::rt::lang_start_internal::{{closure}}
             at src/libstd/rt.rs:49
  14: std::panicking::try::do_call
             at src/libstd/panicking.rs:296
  15: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:82
  16: std::panicking::try
             at src/libstd/panicking.rs:275
  17: std::panic::catch_unwind
             at src/libstd/panic.rs:394
  18: std::rt::lang_start_internal
             at src/libstd/rt.rs:48
  19: std::rt::lang_start
             at /rustc/eae3437dfe991621e8afdc82734f4a172d7ddf9b/src/libstd/rt.rs:64
  20: rx::main

Fails to build on 18.04

I'm trying to build a snap of rx, on an Ubuntu 18.04 system. Using rust nightly, it fails to build as below. Any ideas what I can do here?

   Compiling rgx v0.1.8                                                                                                             
   Compiling rx v0.2.0 (/root/parts/rx/build)                                                                                                             
error[E0308]: mismatched types                                                                                                                                                                                                                                                                                                                                                    
   --> src/renderer.rs:242:37                                     
    |                                                                                                                                                                                                                                                                                                                                                                             
242 |             Op::Fill(&font.texture, font_img.as_slice()),                                                                                                                          
    |                                     ^^^^^^^^^^^^^^^^^^^ expected struct `rgx::core::Rgba8`, found `u8`                                                                                                                                                                                                                                                                      
    |                                                                                                                                                     
    = note: expected reference `&[rgx::core::Rgba8]`                                                                                                                                                                                                                                                                
               found reference `&[u8]`                                                                                                                                                                                                                                  
                                                                                                                                                          
error[E0308]: mismatched types                                               
   --> src/renderer.rs:243:40                                                                                                                                                            
    |                                                                                                                                                                                    
243 |             Op::Fill(&cursors.texture, cursors_img.as_slice()),                                                                                                                                                                                                                                                                                                             
    |                                        ^^^^^^^^^^^^^^^^^^^^^^ expected struct `rgx::core::Rgba8`, found `u8`                                                                                                                                                                                                                                                                
    |                                                                                                                                                     
    = note: expected reference `&[rgx::core::Rgba8]`                                                                                                      
               found reference `&[u8]`                                       
                                                                                                                                                          
error[E0308]: mismatched types                                                                                                                                                                                                                                                                                                                                                    
   --> src/renderer.rs:244:40                                                                                                                                                            
    |                                                                                                                                                                                                                                                                                                                                                                             
244 |             Op::Fill(&checker.texture, &checker_img),                                                                                                                              
    |                                        ^^^^^^^^^^^^ expected slice, found array `[u8; 16]`                                                                                         
    |                                                                                                                                                     
    = note: expected reference `&[rgx::core::Rgba8]`                                                                                                                                                                                                                                                                
               found reference `&[u8; 16]`                                                  
                                                                                                                                                                                         
error[E0308]: mismatched types                                                                                                                                                           
   --> src/renderer.rs:603:42                                                               
    |                                                                                       
603 |                 Op::Clear(&view_data.fb, Rgba::TRANSPARENT),                                                                                                                       
    |                                          ^^^^^^^^^^^^^^^^^ expected struct `rgx::core::Bgra8`, found struct `rgx::core::Rgba`                    

                                               
error[E0308]: mismatched types                                                                        
   --> src/renderer.rs:604:50                                                                                                                                                                                
    |                          
604 |                 Op::Clear(&view_data.staging_fb, Rgba::TRANSPARENT),                                                                                                                                   
    |                                                  ^^^^^^^^^^^^^^^^^ expected struct `rgx::core::Bgra8`, found struct `rgx::core::Rgba`                                                                  
                                                   
error[E0061]: this function takes 5 parameters but 6 parameters were supplied                         
   --> src/renderer.rs:605:17                                                                                                                                                                                
    |                        
605 | /                 Op::Transfer(    
606 | |                     &view_data.fb,
607 | |                     pixels.as_slice(),                                                        
608 | |                     sw, // Source width                                                       
...   |                                                                                                                                                                                                      
611 | |                     th, // Transfer height
612 | |                 ),    
    | |_________________^ expected 5 parameters
                                                   
error[E0308]: mismatched types                                                                        
   --> src/renderer.rs:616:38                                                                                                                                                                                
    |                                                                                                 
616 |             r.prepare(&[Op::Fill(fb, snapshot.pixels().as_slice())]);                                                                                                                                  
    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `rgx::core::Bgra8`, found `u8`                                                                                       
    |                                                                                                 
    = note: expected reference `&[rgx::core::Bgra8]`                                                  
               found reference `&[u8]`
                                                                  
error[E0308]: mismatched types                                                                        
   --> src/renderer.rs:663:42                                                                         
    |                          
663 |                 Op::Clear(&view_data.fb, Rgba::TRANSPARENT),                                    
    |                                          ^^^^^^^^^^^^^^^^^ expected struct `rgx::core::Bgra8`, found struct `rgx::core::Rgba`                                                                          
                                                                                                                                                                                                                                                                        
error[E0308]: mismatched types                                                                        
   --> src/renderer.rs:664:50                                                                                                       
    |                                              
664 |                 Op::Clear(&view_data.staging_fb, Rgba::TRANSPARENT),                            
    |                                                  ^^^^^^^^^^^^^^^^^ expected struct `rgx::core::Bgra8`, found struct `rgx::core::Rgba`                                                                  
                                                                                                      
error[E0308]: mismatched types                                                                        
   --> src/renderer.rs:665:41                                                                         
    |                                                                                                                                                                                                                                                                   
665 |                 Op::Fill(&view_data.fb, &pixels),                                               
    |                                         ^^^^^^^ expected slice, found struct `std::vec::Vec`    
    |                                                                                                 
    = note: expected reference `&[rgx::core::Bgra8]`                                                  
               found reference `&std::vec::Vec<u8>`                                                   
                                                   
error[E0599]: no function or associated item named `empty` found for type `rgx::core::Rect<_>` in the current scope                                                                                          
   --> src/session.rs:922:40                                                                                                                                                                                 
    |                                                                                                                               
922 |                 self.selection = Rect::empty();                                                                                                     
    |                                        ^^^^^ function or associated item not found in `rgx::core::Rect<_>`                                                                                                                                                                                                                                                                  
                                                                  
error[E0599]: no function or associated item named `empty` found for type `rgx::core::Rect<_>` in the current scope                                                                                                                                                                                                                                                               
    --> src/session.rs:1494:48                                                                                                                                                           
     |                                                                                                                                                                                                                                                                                                                                                                            
1494 |                         self.selection = Rect::empty();                                                                                            
     |                                                ^^^^^ function or associated item not found in `rgx::core::Rect<_>`                                                                                                                                                                                           
                                                                                                                                                                                                                                                                        
error: aborting due to 12 previous errors                                                                                                                 

init.rx: fatal: no active view

When loading config options from ~/.config/rx/init.rx I'm getting the following errors:

[2020-01-04T23:46:09Z DEBUG rx::session] source: /home/pop/.config/rx/init.rx
[2020-01-04T23:46:09Z DEBUG rx::session] command: Set("checker", Bool(true))
[2020-01-04T23:46:09Z DEBUG rx::session] set `checker`: off -> on
[2020-01-04T23:46:09Z DEBUG rx::session] command: Set("grid/spacing", U32Tuple(4, 4))
[2020-01-04T23:46:09Z DEBUG rx::session] set `grid/spacing`: 8,8 -> 4,4
[2020-01-04T23:46:09Z DEBUG rx::session] command: ResizeFrame(64, 64)
thread 'main' panicked at 'fatal: no active view', src/session.rs:1293:9

Not every setting triggers this crash, but these do:

Seems like any command that calls self.active_view_mut() triggers the crash. Maybe the active view needs to be initialized before config files are loaded?

Without those config options set rx starts and runs well.

I'd love to contribute to the project. If I could get some direction on what changes should be made and where to make them I'd be more than happy to put together a pull request.


System details:

  • Linux/Fedora 30 with Wayland
  • rustc 1.42.0-nightly (3a3f4a7cb 2019-12-28)

Let me know if you need more system deets.

How to run on non-Vulkan systems?

Getting

[2019-10-01T07:18:41Z WARN  rx::platform::backend] glfw: content scale isn't uniform: 1.0426929 x 1.044408
thread 'main' panicked at 'Unable to load Vulkan entry points: LibraryLoadError("libvulkan.so.1: cannot open shared object file: No such file or directory")', src/libcore/result.rs:999:5

Framebuffer size is incorrect on Linux with HiDPI display

I've created a new issue so we could figure this one out on here. Could you remind me which line I should edit to better test the cursor positioning bug. I use a wacom intuos 3 tablet btw.

Issue

When I move over the canvas with the wacom pencil, there is an offset from the screen position, and the canvas position.

Screenshot from 2020-01-06 14-42-28@2x

[Request] Background color

I might have missed it in the help menu, but it would be great to be able to change the background color of the window to something other than black - trying to draw black/dark sprites

Frame cloning and sync editing

Full copying and pasting ability would be very useful ofc and I'm sure it's on the roadmap, but in the meantime two features would help a lot with the animation process:

  • Frame cloning: add a new frame at the end (or even in the middle) with contents copied from another frame. Maybe a f/clone command with frame index?
  • Synchronous editing: propagate edits in a single frame to one or more other frames.

Maybe I can add the features myself and open some PRs if you like the idea? Let me know.
Thank you for building and sharing this project, looks really promising and it's pleasing to use.

Cannot open files (view #1 must exist and have an associated snapshot)

Release: Master (commit 74fac87)
Platform: Fedora Linux + Wayland
Bug: Cannot open existing files

I can open new files just fine but when I try to open an existing .png file rx pops open a window and then crashes.

$ RUST_BACKTRACE=full cargo run -- -v foo.png 
    Finished dev [unoptimized + debuginfo] target(s) in 0.04s
     Running `target/debug/rx -v foo.png`
2020-01-11 09:21:46,841 DEBUG [rx] options: Options { width: 1280, height: 720, resizable: true, headless: false, source: None, exec: Normal, debug: false }
2020-01-11 09:21:46,871 INFO  [rx] framebuffer size: 1281x720
2020-01-11 09:21:46,872 INFO  [rx] scale factor: 1.001165747642517
2020-01-11 09:21:46,874 DEBUG [rx::session] state: Initializing -> Running
[... snip ...]
2020-01-11 09:21:46,878 DEBUG [rx::session] source: /home/pop/Projects/src/github.com/cloudhead/rx/.rxrc
2020-01-11 09:21:46,878 DEBUG [rx::session] rx v0.3.1
2020-01-11 09:21:46,898 DEBUG [rx::session] load: "foo.png"
2020-01-11 09:21:46,917 INFO  [rx::session] "foo.png" 16384 pixels read
thread 'main' panicked at 'view #1 must exist and have an associated snapshot', src/libcore/option.rs:1188:5
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
[... snip ...]
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:84
  13: core::option::expect_failed
             at src/libcore/option.rs:1188
  14: core::option::Option<T>::expect
             at /rustc/3a3f4a7cbaff09722b8c7cc8f09ce86ff5f953a3/src/libcore/option.rs:348
  15: rx::resources::Resources::get_snapshot
             at src/resources.rs:105
  16: rx::gfx::Renderer::handle_effects
             at src/gl/mod.rs:809
  17: <rx::gfx::Renderer as rx::renderer::Renderer>::init
             at src/gl/mod.rs:382
  18: rx::init
             at ./src/lib.rs:193
  19: rx::execute
             at src/main.rs:126
  20: rx::main
             at src/main.rs:36
  21: std::rt::lang_start::{{closure}}
             at /rustc/3a3f4a7cbaff09722b8c7cc8f09ce86ff5f953a3/src/libstd/rt.rs:67
[... snip ...]

I'm digging into this but I'm not making much progress. I'll gladly try to fix it if you give me some hints on where the solution might go ๐Ÿ˜‰

Error sourcing `palettes/sweetie16.palette`: "palettes/sweetie16.palette" not found

Something seems missing after cargo install.

Probably some basic palette should be embedded into executable with include_bytes!() or whatever to make it self-sufficient.

Alternatively (maybe better), entire config from git may be zipped and embedded into rx executable and unpacked on first start if $XDG_CONFIG_HOME/rx is missing.

Painting with keyboard

It would be great if a user could control brush with keyboard, instead of frame. Maybe it could be done in modal fashion like vim. Right now it doesn't make sense to use hjkl when you need to use mouse at the same time.

Also it would be great if you could map specific keybindings for creating specific patterns, maybe through scripting language or just with libraries of images.

Tests

  • parser.rs: the parser should be property tested with something like quickcheck
  • cmd.rs: CommandLine should be tested with ascii and utf8
  • resources.rs: Gif export should be tested
  • session.rs: inputs (mouse, keyboard) should be fuzz-tested to ensure nothing can crash the program.
  • session.rs: selection/* commands should be tested in headless mode
  • session.rs: all commands that take user input should be tested with unexpected inputs to ensure there is no division by zero for example
  • lib.rs: rx's entry point should be tested with different inputs
  • Test that everything that modifies a view sets the [modified] flag on it

Report an input bug this has already been fixed in the master branch

I was going to report that I cannot use ctrl key to toggle the sampler, in my windows pc (gnu-toolchain).

After I browsed through the recent commits, it seems like something has been done to solve this problem (like 73f26c2). And I have tested the master branch build, it works.

I am opening this issue to document that this issue happened in the v0.4 version but solved in the master branch.

Thanks for the great work!

Edit: nevermind, it has been reported in #66

macOS fullscreen laggy

When going fullscreen on macOS moving the cursor becomes super slow. Weirdly this issue doesn't happen while screen recording is happening via QuickTime : D

Proof.

The package was built via:

rx ยป cargo install --git https://github.com/cloudhead/rx --tag v0.2.0 --locked --features metal
    Updating git repository `https://github.com/cloudhead/rx`
  Installing rx v0.2.0 (https://github.com/cloudhead/rx?tag=v0.2.0#a296ebf4)
    Updating git repository `https://github.com/cloudhead/rendy`
    Updating crates.io index
  Downloaded directories v2.0.2
  Downloaded png v0.15.0
  Downloaded raw-window-handle v0.1.2
  Downloaded gif v0.10.2
  Downloaded deflate v0.7.20
  Downloaded dirs-sys v0.3.4
  Downloaded rgx v0.1.5
  Downloaded inflate v0.4.5
  Downloaded glfw v0.32.0
  Downloaded color_quant v1.0.1
  Downloaded snap v0.2.5
  Downloaded lzw v0.10.0
  Downloaded adler32 v1.0.3
  Downloaded objc v0.2.6
  Downloaded glfw-sys v3.3.0
  Downloaded wgpu v0.3.0
  Downloaded malloc_buf v0.0.6
  Downloaded objc_exception v0.1.1
  Downloaded zerocopy v0.2.8
  Downloaded wgpu-native v0.3.3
  Downloaded gcc v0.3.55
  Downloaded cmake v0.1.41
  Downloaded gfx-backend-empty v0.3.0
  Downloaded gfx-backend-metal v0.3.0
  Downloaded gfx-hal v0.3.0
  Downloaded rendy-descriptor v0.4.0
  Downloaded hibitset v0.6.2
  Downloaded backtrace v0.3.34
  Downloaded colorful v0.2.1
  Downloaded derivative v1.0.2
  Downloaded relevant v0.4.2
  Downloaded zerocopy-derive v0.1.4
  Downloaded fxhash v0.2.1
  Downloaded cc v1.0.40
  Downloaded foreign-types v0.3.2
  Downloaded block v0.1.6
  Downloaded cocoa v0.18.4
  Downloaded range-alloc v0.1.0
  Downloaded storage-map v0.2.0
  Downloaded foreign-types-shared v0.1.1
  Downloaded core-graphics v0.17.3
  Downloaded metal v0.15.0
  Downloaded objc-foundation v0.1.1
  Downloaded atom v0.3.5
  Downloaded spirv_cross v0.15.0
  Downloaded objc_id v0.1.1
   Compiling proc-macro2 v0.4.30
   Compiling libc v0.2.62
   Compiling unicode-xid v0.1.0
   Compiling gcc v0.3.55
   Compiling syn v0.15.44
   Compiling cc v1.0.40
   Compiling semver-parser v0.7.0
   Compiling core-foundation-sys v0.6.2
   Compiling bitflags v1.1.0
   Compiling foreign-types-shared v0.1.1
   Compiling byteorder v1.3.2
   Compiling failure_derive v0.1.5
   Compiling rustc-demangle v0.1.16
   Compiling cfg-if v0.1.9
   Compiling log v0.4.8
   Compiling memchr v2.2.1
   Compiling block v0.1.6
   Compiling arrayvec v0.4.11
   Compiling smallvec v0.6.10
   Compiling scopeguard v1.0.0
   Compiling atom v0.3.5
   Compiling nodrop v0.1.13
   Compiling gfx-backend-metal v0.3.0
   Compiling copyless v0.1.4
   Compiling colorful v0.2.1
   Compiling range-alloc v0.1.0
   Compiling slab v0.4.2
   Compiling autocfg v0.1.5
   Compiling lazy_static v1.3.0
   Compiling crc32fast v1.2.0
   Compiling regex-syntax v0.6.11
   Compiling quick-error v1.2.2
   Compiling vec_map v0.8.1
   Compiling adler32 v1.0.3
   Compiling unicode-width v0.1.5
   Compiling termcolor v1.0.5
   Compiling color_quant v1.0.1
   Compiling lzw v0.10.0
   Compiling semver v0.9.0
   Compiling foreign-types v0.3.2
   Compiling cmake v0.1.41
   Compiling lock_api v0.3.1
   Compiling hibitset v0.6.2
   Compiling thread_local v0.3.6
   Compiling humantime v1.2.0
   Compiling inflate v0.4.5
   Compiling textwrap v0.11.0
   Compiling gif v0.10.2
   Compiling rustc_version v0.2.3
   Compiling num-traits v0.2.8
   Compiling storage-map v0.2.0
   Compiling objc_exception v0.1.1
   Compiling parking_lot_core v0.6.2
   Compiling parking_lot v0.9.0
   Compiling clap v2.33.0
   Compiling malloc_buf v0.0.6
   Compiling core-foundation v0.6.4
   Compiling raw-window-handle v0.1.2
   Compiling atty v0.2.13
   Compiling dirs-sys v0.3.4
   Compiling quote v0.6.13
   Compiling fxhash v0.2.1
   Compiling deflate v0.7.20
   Compiling snap v0.2.5
   Compiling aho-corasick v0.7.6
   Compiling directories v2.0.2
   Compiling core-graphics v0.17.3
   Compiling backtrace-sys v0.1.31
   Compiling spirv_cross v0.15.0
   Compiling glfw-sys v3.3.0
   Compiling png v0.15.0
   Compiling regex v1.2.1
   Compiling objc v0.2.6
   Compiling objc_id v0.1.1
   Compiling cocoa v0.18.4
   Compiling env_logger v0.6.2
   Compiling objc-foundation v0.1.1
   Compiling synstructure v0.10.2
   Compiling backtrace v0.3.34
   Compiling metal v0.15.0
   Compiling relevant v0.4.2
   Compiling glfw v0.32.0
   Compiling derivative v1.0.2
   Compiling zerocopy-derive v0.1.4
   Compiling failure v0.1.5
   Compiling gfx-hal v0.3.0
   Compiling zerocopy v0.2.8
   Compiling rendy-memory v0.4.0 (https://github.com/cloudhead/rendy#e08b64fb)
   Compiling rendy-descriptor v0.4.0
   Compiling gfx-backend-empty v0.3.0
   Compiling wgpu-native v0.3.3
   Compiling wgpu v0.3.0
   Compiling rgx v0.1.5
   Compiling rx v0.2.0 (https://github.com/cloudhead/rx?tag=v0.2.0#a296ebf4)
    Finished release [optimized] target(s) in 3m 14s
  Installing /Users/rudolfs/.cargo/bin/rx
   Installed package `rx v0.2.0 (https://github.com/cloudhead/rx?tag=v0.2.0#a296ebf4)` (executable `rx`)

Segmentation fault

Windows 10 build crashes with SegFault:

rx$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.14s
     Running `target\debug\rx.exe`
[2019-11-07T21:23:56Z INFO  rx::session] rx v0.2.0
error: process didn't exit successfully: `target\debug\rx.exe` (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION)
Segmentation fault

Windows information

OS Name:                   Microsoft Windows 10 Home
OS Version:                10.0.18362 N/A Build 18362

Rust toolchain details

Default host: x86_64-pc-windows-msvc
rustup home:  C:\Users\pavlo\.rustup

installed toolchains
--------------------

stable-x86_64-pc-windows-gnu
stable-x86_64-pc-windows-msvc (default)
nightly-x86_64-pc-windows-msvc

active toolchain
----------------

stable-x86_64-pc-windows-msvc (default)
rustc 1.39.0 (4560ea788 2019-11-04)

Missing deps for debian/ubuntu cargo install

The cargo install documentation is missing the following packages for debian/ubuntu systems:

  • build-essential
  • libxcursor-dev
  • libxi-dev

I needed to install the latter two to compile the x11 dependencies in addition to the others in the docs, and I'm guessing you need the first.

Error when installing for mac

Tried to install it for mac following the instructions for mac. Got an error that I had to install cmake. Was able to resolve it by brew install cmake. Don't know if you can make that part of your dependencies.

But other then that was pretty easy to install and fun to play around with.

Oh and your help is missing the command to mirror things when painting.

Command line ignores Home/End

While trying to figure out the best animation speed by eye, I discovered that, after using the up arrow in rx 0.4.0 to pull the set command back out of the command history, Home/End had no effect and I was forced to wait on the right arrow to get me to the value I wanted to tweak.

"gl" feature seems to be missing.

thread 'main' panicked at 'No adapters found. Please enable the feature for one of the graphics backends: vulkan, metal, dx12, dx11, gl', src/libcore/option.rs:1166:5

"gl"

cargo install --force --git https://github.com/cloudhead/rx --locked --features gl

Package rx v0.1.0 (https://github.com/cloudhead/rx#465f95f4)` does not have these features: `gl``

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.