mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
81 lines
2.1 KiB
TypeScript
81 lines
2.1 KiB
TypeScript
import { Border as BorderDefinition } from ".";
|
|
import { ContentView } from "../content-view";
|
|
import { View, CSSType } from "../core/view";
|
|
import { layout } from "../../utils/utils";
|
|
|
|
@Deprecated
|
|
@CSSType("Border")
|
|
export class Border extends ContentView implements BorderDefinition {
|
|
get cornerRadius(): number {
|
|
if (typeof this.borderRadius === "number") {
|
|
return <number>this.borderRadius;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
set cornerRadius(value: number) {
|
|
this.borderRadius = value;
|
|
}
|
|
|
|
public onMeasure(
|
|
widthMeasureSpec: number,
|
|
heightMeasureSpec: number
|
|
): void {
|
|
const width = layout.getMeasureSpecSize(widthMeasureSpec);
|
|
const widthMode = layout.getMeasureSpecMode(widthMeasureSpec);
|
|
|
|
const height = layout.getMeasureSpecSize(heightMeasureSpec);
|
|
const heightMode = layout.getMeasureSpecMode(heightMeasureSpec);
|
|
|
|
const horizontalBorderLength =
|
|
this.effectiveBorderLeftWidth + this.effectiveBorderRightWidth;
|
|
const verticalBorderLength =
|
|
this.effectiveBorderTopWidth + this.effectiveBorderBottomWidth;
|
|
|
|
const result = View.measureChild(
|
|
this,
|
|
this.layoutView,
|
|
layout.makeMeasureSpec(width - horizontalBorderLength, widthMode),
|
|
layout.makeMeasureSpec(height - verticalBorderLength, heightMode)
|
|
);
|
|
|
|
const widthAndState = View.resolveSizeAndState(
|
|
result.measuredWidth + horizontalBorderLength,
|
|
width,
|
|
widthMode,
|
|
0
|
|
);
|
|
const heightAndState = View.resolveSizeAndState(
|
|
result.measuredHeight + verticalBorderLength,
|
|
height,
|
|
heightMode,
|
|
0
|
|
);
|
|
|
|
this.setMeasuredDimension(widthAndState, heightAndState);
|
|
}
|
|
|
|
public onLayout(
|
|
left: number,
|
|
top: number,
|
|
right: number,
|
|
bottom: number
|
|
): void {
|
|
let horizontalBorderLength =
|
|
this.effectiveBorderLeftWidth + this.effectiveBorderRightWidth;
|
|
let verticalBorderLength =
|
|
this.effectiveBorderTopWidth + this.effectiveBorderBottomWidth;
|
|
|
|
View.layoutChild(
|
|
this,
|
|
this.layoutView,
|
|
this.effectiveBorderLeftWidth,
|
|
this.effectiveBorderTopWidth,
|
|
right - left - horizontalBorderLength,
|
|
bottom - top - verticalBorderLength
|
|
);
|
|
}
|
|
}
|
|
|
|
Border.prototype.recycleNativeView = "auto";
|