commit 26e8760bc423e1d77c9f2cdca1ce0e06c343d012 Author: Andrey Kernichniy Date: Sun Mar 1 21:25:46 2026 +0700 First commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3503468 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +**/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# System files +.DS_Store +Thumbs.db + +playground/gxc-canvas-viewer/**/*.* \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..a514cf1 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,19 @@ +## file extensions +*.* +!*.scss +!*.css +!*.js +!*.json +!*.jsx +!*.less +!*.md +!*.mdx +!*.ts +!*.tsx +!*.yml + +# ignore +node_modules/**/*.* +documentation/**/*.* +dist/**/*.* +coverage/**/*.* diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..304c318 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "bracketSpacing": true, + "printWidth": 140, + "semi": true, + "singleQuote": false, + "tabWidth": 2, + "useTabs": false, + "endOfLine": "auto" +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/lib/src/index.ts b/lib/src/index.ts new file mode 100644 index 0000000..a427c73 --- /dev/null +++ b/lib/src/index.ts @@ -0,0 +1 @@ +export * from "./interfaces"; diff --git a/lib/src/interfaces/index.ts b/lib/src/interfaces/index.ts new file mode 100644 index 0000000..fca68d0 --- /dev/null +++ b/lib/src/interfaces/index.ts @@ -0,0 +1,36 @@ +export type TRendererType = "2d" | "webgl" | "webgl2" | "webgpu" | "html"; + +export type DrawObjectType = "rectangle-object" | "image-object" | "ellipse-object" | "text-object"; + +export interface IDrawObject extends IDrawBorderedRectangle { + readonly id: string; + readonly type: DrawObjectType; + color: string; +} + +export interface IDrawRectangle { + x: number; + y: number; + width: number; + height: number; + angle: number; +} + +export interface IDrawBorderedRectangle extends IDrawRectangle { + border: number; + borderColor: string; +} + +export interface IScene { + objects: IDrawObject[]; + selection?: IDrawRectangle; + spotlight: IDrawRectangle[]; + background: string; + static: IDrawObject[]; +} + +export interface IRenderer { + readonly type: TRendererType; + holder: HTMLElement; + render(scene: IScene): Promise; +} diff --git a/lib/src/package.json b/lib/src/package.json new file mode 100644 index 0000000..efd317b --- /dev/null +++ b/lib/src/package.json @@ -0,0 +1,6 @@ +{ + "name": "@gxc-solutions/renderer-base", + "version": "0.0.1", + "main": "index.js", + "author": "GXC Solutions" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e69de29