Giter Site home page Giter Site logo

clowd / clowd Goto Github PK

View Code? Open in Web Editor NEW
68.0 4.0 7.0 29.35 MB

Simple but powerful screenshot and screen recording tool for Windows.

License: MIT License

Batchfile 0.01% PowerShell 0.24% C# 42.18% C++ 57.45% C 0.08% HLSL 0.03%
c-sharp directx screen-recorder screenshot windows direct3d image-editor obs prntscr recorder

clowd's People

Contributors

caesay avatar rstarkov avatar timwi 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

Watchers

 avatar  avatar  avatar  avatar

clowd's Issues

Tool bugs when editor loses focus

If the editor loses mouse capture and does not trigger the MouseUp event, this causes tools to break - thinking they are still operating even though the action should have been aborted. Tools should handle the LostMouseCapture event to account for this.

jpg instead of png as default format for save.

Make jpg instead of png as default format for save. Png for screenshots by default is only increasing size of the screenshot for no real gains. If people needs lossless screenshots they can switch to png manually.

The creation of a gif also create a mp4

Hello,

When I use the video recording function, I select GIF.
Then I save it in a folder.
So I find in this folder with my GIF, but also the video in MP4

Clowd 3.4.484

image

Clowd crash when trying save capture

Clowd crash when trying save capture
Whether directly with the "SAVE" button below the capture or via the editor

image

Clowd : 3.4.442+b786f0
Windows :
image

Hide video controls from video recordings

If recording the whole screen, there's no great place for the clowd recording controls. If we use WGC and SetWindowDisplayAffinity with WDA_EXCLUDEFROMCAPTURE the controls will not be present in the recording.

WGC also captures cursors more correctly. It's downside is that windows renders the yellow border around the display, and there are some types of windows that it will not record.

https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowdisplayaffinity

Possible undo/redo improvements

The current architecture allows anything to add an entry to the undo history by calling AddCommandStep(). When called, it serializes all of the graphics in a deterministic way to a byte[] array. This is done in many places eagerly, such as a pointer tool mouse-up after dragging, or after adding a new graphic. If the previous state is identical to the current state, it is discarded.

This works very well most of the time and it's very unlikely that a change will be missed and not added to the history.

There are a couple things that can be improved:

  1. If we are doing an operation like nudge, or changing object line width, it's possible for many entries to get added to the history as AddCommandStep() is triggered every time something is changed
  2. Modifying an image crop causes an history entry for each modification of the crop window which produces some unexpected results as object state may be inconsistent while cropping. A crop operation should only be treated as a single entry.
  3. We could store the entire undo/redo history so it is preserved for re-loaded sessions

Design considerations:

  • Undo manager ideally would have little/no knowledge about any specific graphic object. (ie. avoid specific checks looking for things like GraphicImage.Editing)

I considered serialising the objects to an XElement and comparing the XML element(s) that have changed between the previous and current entry instead of doing a binary comparison. This would help with (1) but we would need some additional consideration for things like Left, Top, etc. An object Move will update all of the coordinate properties, as well as content bounds. This implies that some knowledge of the specific graphics would be required.

Obscure tool does not respect image rotation

The Obscure tool applies the effect to where the image would be if the Angle was 0deg.

If we want the pixelated rectangle to appear exactly as drawn, we'll need to store angle information along with each obscured area. You could rotate, obscure, rotate obscure, etc.

wishlist

Editor

  • upon every editor change, a preview image is generated on the main thread, causing a slight UI hiccup (or bigger than slight on low performance computers)
  • allow cursor to be toggled on/off in editor
  • Recent page is empty if no captures have been taken yet. Show a helpful message
  • don't save empty documents
  • bring image crop back
  • should be able to nudge graphics with arrow keys
  • transparent drawings are not click through
  • reset angle no longer updates artwork bounds. adding/removing graphics does not update bounds.
  • shift+drag to pan no longer changes the cursor to 4 arrows
  • save as jpeg
  • move up/down through Z order

Screenshot

  • drawing text during the capture is super expensive! if we are dropping frames, try disabling cleartype. if framerate is bad (<40), we should probably disable vsync so we're not dropping 50% of all frames (makes it feel REALLY laggy)
  • We could try using Preset2 (or what it is actually called) to mark certain areas as non-dirty
  • a very long window title makes the tooltip panel extra big and it wraps and looks bad (i might even drop the window title and the display name, they both look messy)
  • need a better font for the tips panel (??)
  • selection size text should move instead of disappear when it can't fit
  • full-screen zoom in Telegram is not recognized as a window and gets hidden

Other

  • Color picker should use HSL as the internal color representation to prevent sliders from being reset.
  • Double clicking a color from the palette should automatically close the dialog.

Bugs

  • Zoom is not always centered on the right place
  • Panning should clear auto-fit-center mode so that resizing the window doesn't re-fit

Improve usability of the mini color dialog

image

I have recently implemented a mini-color-picker in the experimental branch. This issue is to track some potential improvements.

  • Keyboard support (eg. Enter, Esc)
  • Remember recently used custom colors as a third swatch row. Store in global settings.
  • Allow you to switch between HEX, RGB, and HSL textbox modes similar to the devtools implementation
  • Apply color changes in real time and remove the "Cancel" and "Accept" buttons at the bottom.
  • Eye dropper to pick a color from screen

Screenshot cursor is uncontrollable over RDP

From Discord:

I often use MS Remote Desktop to control my PC from my MAC. And when I want to use Clowd to take a screenshot, it's messy, I can't select a portion of the screen, the cursor is stuck on the edges, whatever I want it to go...

The reason for this is almost certainly that we use a fake "gamified" cursor. We do this to support fractional positioning when the canvas is zoomed in. (otherwise we'd have to snap the cursor to real pixels, and it would be moving too fast to be precise).

I suspect we can fix this by using the real windows cursor at zoom=1 and only switching to a fake cursor when zoom > 1. This might also fix another issue reported, where with a high dpi cursor and a high refreshrate display, moving the mouse while pressing PrtScr causes the mouse position to jump to an invalid position.

Add Self-Hosted Hasty Paste to Pastebin upload solution

Hello,
Is it possible to integrate the self-hosted solution https://github.com/enchant97/hasty-paste as an Pastebin upload solution?

Hasty paste can be used via API keys:
https://enchantedcode.co.uk/hasty-paste/rest-api.html

Ideally, if it would be possible to set the default expiration time ( never / x days / x hours ...) in settings that would be great.

thanks again


Exemple USE API :

curl -X 'POST' \
  'https://paste_url/api/pastes' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "content": "string",
  "expire_dt": "2022-10-25T12:18:34.347Z",
  "long_id": true,
  "content": "test"
}'

Acces to paste via : https://paste_url/<paste_id>

Réponse :

{
  "creation_dt": "Sun, 25 Sep 2022 12:24:40 GMT",
  "expire_dt": "Tue, 25 Oct 2022 12:18:34 GMT",
  "lexer_name": null,
  "paste_id": "uwZXsvCngRgXhTeCnUUpg6DOu0UPF5GgspEIETGB",
  "title": null,
  "version": 1
}

Acces to paste via : https://paste_url/<paste_id>
Acces to exemple paste via : https://paste_url/uwZXsvCngRgXhTeCnUUpg6DOu0UPF5GgspEIETGB

The content of a "Text" field is not saved if the user chooses the upload option

The content of a "Text" field is not saved if the user chooses the upload option

After creating a "Text" field:

  1. If you directly choose the "Copy" or "Save" option, the text block contains the personalized text.
  2. If you directly choose the "upload" ( it to Imgur ), the text block contains the default text
2022-09-08.23-44-09.mp4

A workaround is to click anywhere on the canvas before clicking upload.

Thx

Session images should not be shared

Copying an image from one editor session to another does not work as expected. The object data (such as image file path) is copied to the session, but the images themselves are not copied. This means if you copy an image from session A to session B, and then delete session A, session B will be left in a corrupted state.

Capture cursor jumps around under high CPU load

When the CPU load is high enough to cause some mouse lag, the normal OS cursor seems to skip some points and still end up in a reasonable spots that matches the mouse input. The capture cursor behaves somewhat erratically in this case, jumping long distances with and without zoom.

Error during video recording with sound

When starting to record a video with sound, this error occurs :

screenshot

We find the same message in the log generated in the destination folder. It does not happen when the sound is not activated in the recording settings.

Clowd version : 3.4.371+645041
OS : Windows 10 21H2

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.