| 
							
							
							
						 |  |  | @@ -1,5 +1,7 @@ | 
		
	
		
			
				|  |  |  |  | import { DoricContext } from "../DoricContext"; | 
		
	
		
			
				|  |  |  |  | import { acquireViewNode } from "../DoricRegistry"; | 
		
	
		
			
				|  |  |  |  | import { GradientColor, GradientOrientation, generateGradientColorDesc, generateGradientOrientationDesc } from "../utils/color"; | 
		
	
		
			
				|  |  |  |  | import { toRGBAString } from "../utils/color"; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | export enum LayoutSpec { | 
		
	
		
			
				|  |  |  |  |     EXACTLY = 0, | 
		
	
	
		
			
				
					
					|  |  |  | @@ -37,17 +39,6 @@ export function pixelString2Number(v: string) { | 
		
	
		
			
				|  |  |  |  |     return parseFloat(v.substring(0, v.indexOf("px"))) | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | export function toRGBAString(color: number) { | 
		
	
		
			
				|  |  |  |  |     let strs = [] | 
		
	
		
			
				|  |  |  |  |     for (let i = 0; i < 32; i += 8) { | 
		
	
		
			
				|  |  |  |  |         strs.push(((color >> i) & 0xff)) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     strs = strs.reverse() | 
		
	
		
			
				|  |  |  |  |     /// RGBAd | 
		
	
		
			
				|  |  |  |  |     return `rgba(${strs[1]},${strs[2]},${strs[3]},${strs[0] / 255})` | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | export type DoricViewNodeClass = { new(...args: any[]): {} } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | export interface DVModel { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -58,14 +49,6 @@ export interface DVModel { | 
		
	
		
			
				|  |  |  |  |     }, | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | export interface GradientType { | 
		
	
		
			
				|  |  |  |  |   start?: number; | 
		
	
		
			
				|  |  |  |  |   end?: number; | 
		
	
		
			
				|  |  |  |  |   colors?: number[]; | 
		
	
		
			
				|  |  |  |  |   locations?: number[]; | 
		
	
		
			
				|  |  |  |  |   orientation?: number; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | export abstract class DoricViewNode { | 
		
	
		
			
				|  |  |  |  |     viewId = "" | 
		
	
		
			
				|  |  |  |  |     viewType = "View" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -376,7 +359,7 @@ export abstract class DoricViewNode { | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     set backgroundColor(v: number | GradientType) { | 
		
	
		
			
				|  |  |  |  |     set backgroundColor(v: number | GradientColor) { | 
		
	
		
			
				|  |  |  |  |         console.log('background') | 
		
	
		
			
				|  |  |  |  |         if (typeof v === 'number') { | 
		
	
		
			
				|  |  |  |  |             this.applyCSSStyle({ backgroundColor: toRGBAString(v) }); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -387,51 +370,13 @@ export abstract class DoricViewNode { | 
		
	
		
			
				|  |  |  |  |                 colorsParam = colors.map((c:number) => { | 
		
	
		
			
				|  |  |  |  |                     return toRGBAString(c) | 
		
	
		
			
				|  |  |  |  |                 }) | 
		
	
		
			
				|  |  |  |  |             } else if (start && end){                   | 
		
	
		
			
				|  |  |  |  |             } else if (typeof start === 'number' && typeof end === 'number') {                   | 
		
	
		
			
				|  |  |  |  |                 colorsParam.push(...[toRGBAString(start), toRGBAString(end)]) | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             switch (orientation) { | 
		
	
		
			
				|  |  |  |  |                 case 1 : | 
		
	
		
			
				|  |  |  |  |                     this.applyCSSStyle({ backgroundImage: `linear-gradient(to bottom left, ${this.generateGradient(colorsParam, locations)})` }) | 
		
	
		
			
				|  |  |  |  |                     break | 
		
	
		
			
				|  |  |  |  |                 case 2: | 
		
	
		
			
				|  |  |  |  |                     this.applyCSSStyle({ backgroundImage: `linear-gradient(to left, ${this.generateGradient(colorsParam, locations)})` }) | 
		
	
		
			
				|  |  |  |  |                     break | 
		
	
		
			
				|  |  |  |  |                 case 3: | 
		
	
		
			
				|  |  |  |  |                     this.applyCSSStyle({ backgroundImage: `linear-gradient(to top left, ${this.generateGradient(colorsParam, locations)})` }) | 
		
	
		
			
				|  |  |  |  |                     break | 
		
	
		
			
				|  |  |  |  |                 case 4: | 
		
	
		
			
				|  |  |  |  |                     this.applyCSSStyle({ backgroundImage: `linear-gradient(to top, ${this.generateGradient(colorsParam, locations)})` }) | 
		
	
		
			
				|  |  |  |  |                     break | 
		
	
		
			
				|  |  |  |  |                 case 5: | 
		
	
		
			
				|  |  |  |  |                     this.applyCSSStyle({ backgroundImage: `linear-gradient(to top right, ${this.generateGradient(colorsParam, locations)})` }) | 
		
	
		
			
				|  |  |  |  |                     break | 
		
	
		
			
				|  |  |  |  |                 case 6: | 
		
	
		
			
				|  |  |  |  |                     this.applyCSSStyle({ backgroundImage: `linear-gradient(to right, ${this.generateGradient(colorsParam, locations)})` }) | 
		
	
		
			
				|  |  |  |  |                     break | 
		
	
		
			
				|  |  |  |  |                 case 7: | 
		
	
		
			
				|  |  |  |  |                     this.applyCSSStyle({ backgroundImage: `linear-gradient(to bottom right, ${this.generateGradient(colorsParam, locations)})` }) | 
		
	
		
			
				|  |  |  |  |                     break | 
		
	
		
			
				|  |  |  |  |                 default: | 
		
	
		
			
				|  |  |  |  |                     this.applyCSSStyle({ backgroundImage: `linear-gradient(to bottom, ${this.generateGradient(colorsParam, locations)})` }) | 
		
	
		
			
				|  |  |  |  |                     break | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             this.applyCSSStyle({ backgroundImage: `linear-gradient(${generateGradientOrientationDesc(orientation)}, ${generateGradientColorDesc(colorsParam, locations)})`}) | 
		
	
		
			
				|  |  |  |  |         }   | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     generateGradient(colors: string[], locations?:number[]) { | 
		
	
		
			
				|  |  |  |  |         if (!locations) { | 
		
	
		
			
				|  |  |  |  |             return colors.join(', ') | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         if (colors.length !== locations.length) { | 
		
	
		
			
				|  |  |  |  |           throw new Error("Colors and locations arrays must have the same length."); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |        | 
		
	
		
			
				|  |  |  |  |         const gradientStops = colors.map((color, index) => `${color} ${locations[index] * 100}%`); | 
		
	
		
			
				|  |  |  |  |         return gradientStops.join(", "); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     static create(context: DoricContext, type: string) { | 
		
	
		
			
				|  |  |  |  |         const viewNodeClass = acquireViewNode(type) | 
		
	
		
			
				|  |  |  |  |         if (viewNodeClass === undefined) { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -549,7 +494,7 @@ export abstract class DoricViewNode { | 
		
	
		
			
				|  |  |  |  |         return this.view.style.backgroundColor | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     setBackgroundColor(v: number | GradientType) { | 
		
	
		
			
				|  |  |  |  |     setBackgroundColor(v: number | GradientColor) { | 
		
	
		
			
				|  |  |  |  |         this.backgroundColor = v | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  |   |