{"id":26057792,"url":"https://github.com/feenkcom/fenster","last_synced_at":"2026-01-27T09:14:40.042Z","repository":{"id":110077911,"uuid":"232891514","full_name":"feenkcom/fenster","owner":"feenkcom","description":"I contain reusable components to help implement support of native windows","archived":false,"fork":false,"pushed_at":"2023-12-12T18:25:50.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":13,"default_branch":"main","last_synced_at":"2023-12-13T19:15:14.587Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Smalltalk","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/feenkcom.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}},"created_at":"2020-01-09T19:46:24.000Z","updated_at":"2022-03-18T19:47:28.000Z","dependencies_parsed_at":"2023-05-21T00:45:28.596Z","dependency_job_id":null,"html_url":"https://github.com/feenkcom/fenster","commit_stats":null,"previous_names":[],"tags_count":41,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Ffenster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Ffenster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Ffenster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Ffenster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/feenkcom","download_url":"https://codeload.github.com/feenkcom/fenster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242546038,"owners_count":20147096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2025-03-08T11:59:01.106Z","updated_at":"2026-01-27T09:14:40.009Z","avatar_url":"https://github.com/feenkcom.png","language":"Smalltalk","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fenster\n```\ndas Fenster (Ger.) – a window\n```\n\nContains reusable components to deal with various aspects of the native windows\n\n## Geometry\n\nWhen working with native windows we should handle two types of geometrical measurements: logical and physical.\nFor example, when creating a rendering surface, the size of that surface should be given in physical pixels, however when creating a window itself, the size is given in logical pixels.\n\nThe relation between logical and physical pixels is defined by the display scale factor which depends on the user OS settings and display's pixel density.\n\n`fenster` models logical and physical metrics as first class objects and allows users to convert between them:\n\n```smalltalk\nlogicalSize := FensterLogicalSize\n  width: 400\n  height: 300.\nscaleFactor := 2.\n  \nphysicalSize := logicalSize asPhysical: scaleFactor.\nself assert: physicalSize asPoint equals: 800@600.\nlogicalSize := physicalSize asLogical: scaleFactor.\nself assert: logicalSize asPoint equals: 400@300.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeenkcom%2Ffenster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeenkcom%2Ffenster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeenkcom%2Ffenster/lists"}