{"id":23413453,"url":"https://github.com/icedpygui/rust_iced_draw","last_synced_at":"2026-02-15T08:33:30.179Z","repository":{"id":269096652,"uuid":"866648540","full_name":"icedpygui/Rust_Iced_Draw","owner":"icedpygui","description":"Drawing program using Iced-rs","archived":false,"fork":false,"pushed_at":"2025-01-23T16:12:13.000Z","size":283,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T01:49:21.689Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icedpygui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-02T16:22:50.000Z","updated_at":"2025-04-10T05:57:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"a19cd1ba-65a2-4e2b-87bb-df8abd5f4853","html_url":"https://github.com/icedpygui/Rust_Iced_Draw","commit_stats":null,"previous_names":["icedpygui/rust_iced_draw"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/icedpygui/Rust_Iced_Draw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icedpygui%2FRust_Iced_Draw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icedpygui%2FRust_Iced_Draw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icedpygui%2FRust_Iced_Draw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icedpygui%2FRust_Iced_Draw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icedpygui","download_url":"https://codeload.github.com/icedpygui/Rust_Iced_Draw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icedpygui%2FRust_Iced_Draw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29473718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T06:58:05.414Z","status":"ssl_error","status_checked_at":"2026-02-15T06:58:05.085Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-22T19:36:14.871Z","updated_at":"2026-02-15T08:33:30.163Z","avatar_url":"https://github.com/icedpygui.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rust_Iced_Draw\nDrawing program using Iced-rs\n\nhttps://github.com/user-attachments/assets/01f8fb41-082a-45b5-92a6-806814385578\n\n## TODO Items:\n* Svg image widget\n* turn degrees display on or off\n* add a pixels amount when drawing or a scaled amount like inches mm, etc.\n\n## Updates to Main since v0.1.0\n* Fixed elipse top positioning during new\n* Fixed circle points not showing during new\n* Blink cursor routine for text not working so just blink with a character and only backspace delete works\n* Text editing only allows moving.  Delete and retype if editing needed.\n\n## Instructions:\n\nSelect a geometry using the radio buttons.\n\nIf a polyline or polygon is selected, also enter the numbers of sides.\n\nThe freehand and polyline are similar.  \nThe freehand will continue until the enter key is pressed.\nThe polyline will end when the number of points are reached.\n\nColors can be selected using the Draw Color and Canvas Color.\n\nGeometries can be save and loaded via the corresponding buttons.\nThey are stored under the resource folder in a json file.\n\nThe width of the curves can be changed by the width input.\n\n### How to Draw:\n\nDrawing is done by clicking the left mouse button while its in the canvas area.\nHolding the mouse down while drawing doesn't do anything, just click and move mouse.\nThe points are set by each button click.\nDifferent geometries have a different number of clicks before finished.\n\n* Arc - 3 clicks - best to move left after the first click\n* Bezier - 3 clicks\n* Circle - 2 clicks\n* Ellipse 2 clicks, best to move left after the first one\n* Line - 2 clicks\n* PolyLine - based on the poly points entered\n* Polygon - 2 clicks, poly points determe the sides only\n* RightTriangle - 3 clicks\n* Text - 1 click then start typing, another click to end\n* FreeHand  - unlimited clicks, press enter to end.\n\n\nThe curves can be edited by selecting the Edit mode and clicking\nnear the curve you want to edit.  The edit search is based on the \nmidpoint of the curve except for the freehand which is based on the first point.\n\nNext move the mouse close to the point of interest and click again.\nPosition the point where needed and click once more to finish.\nif you selected the mid point, you can drag the curve to a new place.\n\nThe curves can be rotated in two ways.\n1. if in edit mode, one of the points will rotate the curve.\n2. mouse scrolling.\n3. text is rotated by mouse only in Rotate mode.  The text is rotated based\n    on the position of the text alignment.\n\n\n\n## Program flow:\n\n### Overview: \nThe key program flow areas are the DrawPending and DrawCurve implements\n\nThe flow in the DrawPending is used to update the curves until they are complete.\nThe exception is the text widget, discussed later.\n\nIn a normal operation, the draw_all() method draws the curves from cache.  \nA redraw doesn't happen until the cache is cleared.  So if a pending curve is present,\nthe pending curve is drawn only leaving the other curves displayed.\nWhen the pending curve is finished, it's added to the curves and the cache is cleared,\nwhich causes a refresh of the canvas.\n\nIf a curve is in the edit or rotation mode, the cache is cleared and redrawn skipping\nover the curve that's being edited.  The Pending::Edit or Pending::Rotation curve is then \ndisplayed.\n\nOnce the mouse is clicked, a canvas event for the mouse left button pressed occurs.\nPending at this point is None, so parameters are added to the Some(Pending).\n\nDuring the next mouse clicks, depending on the draw method, New, Edit, Rotate,\nthe Pending is matched.\n\n### Pending flow:\n\nFor Pending::New, the Pening returns itself until a widget criteria is met and \nthen the curve is returned.\n\nFor Pending::Edit, 3 pending happen.\n1st click =\u003e Pending::Edit is None, so the closest widget is found and a Pending::EditSecond\nis passed on.\n2nd click =\u003e The closest point to be editied is found and a Pending::EditThird is passed on.\n3rd click =\u003e The edited curve is returned to have the curves updated and displayed.\n\nFor Pending::Rotation, the mouse scroll event is used to rotate the widgets.\n1st click =\u003e closest widget is found and highlighted.\nmouse scroll =\u003e widget is rotated\n2nd click =\u003e rotation ends and curve return for updating.\n\nThe Text widget is different because of need to have a blinking cursor.\nCanvas does not have a timed event so the main subscription event is used.\nThe subscription event is turned on when a Text widget is selected.  At each tick,\nthe canvas text cache is cleared resulting in a redraw. \nPending returns a curve to the main messaging function for display.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficedpygui%2Frust_iced_draw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficedpygui%2Frust_iced_draw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficedpygui%2Frust_iced_draw/lists"}