Skip to content

Commit

Permalink
ImTransform::Invert
Browse files Browse the repository at this point in the history
  • Loading branch information
zhobo63 committed Sep 1, 2023
1 parent 236a2a9 commit 7ae3893
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 11,811 deletions.
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ webpack

* Merge ImFont

```cpp
```typescript
let fontface=new FontFace("FontAwesome",
"url(res/fa-solid-900.woff2) format(woff2)", {});
await fontface.load().then(r=>{
Expand All @@ -74,15 +74,15 @@ ImGui.Text("this is a \uf013 gear.");
* ImTransform

```typescript
let tm=new ImTransform();
tm.rotate.SetRotate(radians); //rotate
tm.scale=1+Math.sin(time)*0.5; //scale
tm.translate.Set(100,100); //translate
let vstart=drawlist.GetVertexSize();
//draw some thing
drawlist.AddRectFilledMultiColorRound(this.v1,this.v2,0xff00ff00, 0xffffff00, 0xff00ffff, 0xff0000ff,4,ImGui.ImDrawCornerFlags.All);
drawlist.AddRect(this.v1,this.v2,0xff0000ff, 4, ImGui.ImDrawCornerFlags.All);
drawlist.Transform(tm, vstart);
let tm=new ImTransform();
tm.rotate.SetRotate(radians); //rotate
tm.scale=1+Math.sin(time)*0.5; //scale
tm.translate.Set(100,100); //translate
let vstart=drawlist.GetVertexSize();
//draw some thing
drawlist.AddRectFilledMultiColorRound(this.v1,this.v2,0xff00ff00, 0xffffff00, 0xff00ffff, 0xff0000ff,4,ImGui.ImDrawCornerFlags.All);
drawlist.AddRect(this.v1,this.v2,0xff0000ff, 4, ImGui.ImDrawCornerFlags.All);
drawlist.Transform(tm, vstart);
```

* ImDrawList: AddRectFilledMultiColorRound
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zhobo63/imgui-ts",
"version": "0.1.31",
"version": "0.1.33",
"description": "JavaScript bindings for Dear ImGui using Emscripten and TypeScript, modulized with webpack from imgui-js",
"main": "./src/index",
"scripts": {
Expand Down
2 changes: 2 additions & 0 deletions src/bind-imgui.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ export interface interface_ImMat2 {
Equals(other: Readonly<interface_ImMat2>): boolean;

Identity(): void;
Transpose():interface_ImMat2;
SetRotate(radius:number):void;
Multiply(other: Readonly<interface_ImMat2>): interface_ImMat2;
Transform(p: Readonly<interface_ImVec2>): interface_ImVec2;
Expand All @@ -159,6 +160,7 @@ export interface interface_ImTransform {
Identity(): void;
Multiply(transform: Readonly<interface_ImTransform>): interface_ImTransform;
Transform(point: Readonly<interface_ImVec2>): interface_ImVec2;
Invert():interface_ImTransform;
}

export interface reference_ImTransform extends Emscripten.EmscriptenClassReference, interface_ImTransform {}
Expand Down
15 changes: 15 additions & 0 deletions src/imgui.ts
Original file line number Diff line number Diff line change
Expand Up @@ -939,6 +939,10 @@ export class ImMat2 implements Bind.interface_ImMat2 {
this.m21=0;
this.m22=1;
}
Transpose():ImMat2
{
return new ImMat2(this.m11, this.m21, this.m12, this.m22);
}

SetRotate(radius: number): this {
const c=Math.cos(radius), s=Math.sin(radius);
Expand Down Expand Up @@ -995,6 +999,17 @@ export class ImTransform implements Bind.interface_ImTransform
p.y=p.y*this.scale+this.translate.y;
return p;
}
Invert():Bind.interface_ImTransform
{
let tm:ImTransform=new ImTransform;
tm.rotate=this.rotate.Transpose();
tm.scale = 1.0 / this.scale;
let t=new ImVec2(-this.translate.x, -this.translate.y);
t=tm.rotate.Transform(t);
tm.translate.x = t.x*tm.scale;
tm.translate.y = t.y*tm.scale;
return tm;
}
}

//-----------------------------------------------------------------------------
Expand Down
22 changes: 4 additions & 18 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import * as ImGui_Impl from "./imgui_impl"

export {ImGui, ImGui_Impl}

export const version="0.1.30";
export const version="0.1.33";

export function ImGuiObject(obj:any, id:number=0):number
{
Expand Down Expand Up @@ -41,7 +41,7 @@ export function ImGuiObject(obj:any, id:number=0):number
return id;
}


/*
let _main:Main;
Expand Down Expand Up @@ -158,7 +158,7 @@ class Main
drawlist.AddRect(this.v1,this.v2,0xff0000ff, 4, ImGui.ImDrawCornerFlags.All);
this.tm.rotate.SetRotate(time*0.001);
this.tm.translate.Set(200,200);
this.tm.scale=0.5+Math.sin(time*0.001)*0.25;
this.tm.scale=1+Math.sin(time*0.001)*0.25;
drawlist.Transform(this.tm, vstart);
ImGui.End();
Expand Down Expand Up @@ -204,23 +204,9 @@ window.addEventListener('DOMContentLoaded', async ()=>{
const canvas:HTMLCanvasElement=document.getElementById("canvas") as HTMLCanvasElement;
ImGui_Impl.Init(canvas);
/*
let tm=new ImGui.ImTransform();
console.log(tm);
tm.rotate.SetRotate(45/Math.PI);
console.log(tm);
//let m2=new ImGui.ImMat2;
//m2.SetRotate(Math.PI/4);
let v=new ImGui.ImVec2(100,100);
console.log(v);
v=tm.Transform(v);
console.log(v);
*/

_main=new Main;
window.requestAnimationFrame(_loop);
});

*/

Loading

0 comments on commit 7ae3893

Please sign in to comment.