fl-web-component 1.2.10 → 1.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,6 +46,8 @@ Vue.use(FlWebComponent)
46
46
  欢迎贡献代码和问题反馈。
47
47
 
48
48
  ## 更新日志
49
+ - 1.2.11 2025-06-24
50
+ 1. 优化文字绘制
49
51
  - 1.2.10 2025-06-23
50
52
  1. 修改文字渲染逻辑
51
53
  - 1.2.9 2025-06-19
@@ -29241,7 +29241,7 @@ if (typeof window !== 'undefined') {
29241
29241
  // Indicate to webpack that this file can be concatenated
29242
29242
  /* harmony default export */ var setPublicPath = (null);
29243
29243
 
29244
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44287e30-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/index.vue?vue&type=template&id=9d23b864&scoped=true
29244
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"aa1018a6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/index.vue?vue&type=template&id=9d23b864&scoped=true
29245
29245
  var com_graphicsvue_type_template_id_9d23b864_scoped_true_render = function render() {
29246
29246
  var _vm = this,
29247
29247
  _c = _vm._self._c;
@@ -57197,6 +57197,7 @@ function parseData(input) {
57197
57197
  type: primitiveData.geomType,
57198
57198
  text: primitiveData.geomText,
57199
57199
  points: primitiveData.position,
57200
+ alignType: primitiveData.alignType,
57200
57201
  normals: primitiveData.normal,
57201
57202
  triangles: primitiveData.indices || [],
57202
57203
  max: primitiveData.max,
@@ -59412,6 +59413,27 @@ var GEOM_TYPES = {
59412
59413
  geom_2d_ellipseArc: 57350,
59413
59414
  geom_2d_others: 57351
59414
59415
  };
59416
+
59417
+ // 文本对齐枚举
59418
+ var TextAlign = {
59419
+ TextLeftBottom: 0,
59420
+ // 左下角
59421
+ TextLeftMiddle: 1,
59422
+ TextLeftTop: 2,
59423
+ TextCenterBottom: 3,
59424
+ TextCenterMiddle: 4,
59425
+ TextCenterTop: 5,
59426
+ TextRightBottom: 6,
59427
+ TextRightMiddle: 7,
59428
+ TextRightTop: 8,
59429
+ // 右上角
59430
+ TextLeft: 9,
59431
+ TextCenter: 10,
59432
+ TextRight: 11,
59433
+ TextAligned: 12,
59434
+ TextMiddle: 13,
59435
+ TextFit: 14
59436
+ };
59415
59437
  var drawObjMapInstance = {};
59416
59438
  /**
59417
59439
  * 处理 InstancedMesh 类型模型的核心方法
@@ -59479,13 +59501,15 @@ function handleInstancedMeshModel(modelGroup, instances, drawObjs, type, scene,
59479
59501
  // m4.setPosition(new THREE.Vector3(9999999, 9999999, 9999999)); // TODO 临时隐藏方案
59480
59502
  meshMatrix.elements = item.matrix.val;
59481
59503
  geomMatrix.elements = mesh.matrix.val;
59482
- var points = mesh.points;
59504
+
59505
+ // 处理文本居中对齐
59506
+ var points = mesh.points,
59507
+ alignType = mesh.alignType;
59483
59508
  if (isTextType(mesh.type)) {
59484
59509
  var positionMatrix = new Matrix4();
59485
- var alignMatrix = new Matrix4();
59510
+ var alignMatrix = createAlignedText(alignType, model.geometry);
59486
59511
  positionMatrix.identity().makeTranslation(points[0], points[1], points[2]);
59487
- alignMatrix.identity().makeTranslation(-(mesh.prop.fontsize / 2.5), -(mesh.prop.fontsize / 2.5), 0);
59488
- geomMatrix.multiply(positionMatrix).multiply(alignMatrix);
59512
+ geomMatrix.multiply(alignMatrix).multiply(positionMatrix);
59489
59513
  }
59490
59514
  m4.multiplyMatrices(meshMatrix, geomMatrix);
59491
59515
  model.setMatrixAt(index, m4);
@@ -59795,7 +59819,7 @@ function drawText(geom, instanceName, instanceCount) {
59795
59819
  var options = {
59796
59820
  font: font,
59797
59821
  // 字体格式
59798
- size: fontsize || 20,
59822
+ size: fontsize / 2 || 20,
59799
59823
  // 字体大小 TODO
59800
59824
  height: 1,
59801
59825
  // 字体深度
@@ -59840,6 +59864,83 @@ function drawText(geom, instanceName, instanceCount) {
59840
59864
  return mesh;
59841
59865
  }
59842
59866
 
59867
+ /**
59868
+ *
59869
+ * @param {number} align 对齐方式
59870
+ * @param {object} geometry 几何体
59871
+ * @returns
59872
+ */
59873
+ function createAlignedText() {
59874
+ var align = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : TextAlign.TextLeftBottom;
59875
+ var geometry = arguments.length > 1 ? arguments[1] : undefined;
59876
+ // 计算几何体包围盒用于对齐计算
59877
+ geometry.computeBoundingBox();
59878
+ var bbox = geometry.boundingBox;
59879
+
59880
+ // 初始化水平和垂直偏移量
59881
+ var offsetX = 0;
59882
+ var offsetY = 0;
59883
+
59884
+ // 水平对齐处理(X轴方向)
59885
+ switch (align) {
59886
+ // 左对齐系列(文本左边界对齐原点)
59887
+ case TextAlign.TextLeft:
59888
+ case TextAlign.TextLeftBottom:
59889
+ case TextAlign.TextLeftMiddle:
59890
+ case TextAlign.TextLeftTop:
59891
+ offsetX = -bbox.min.x; // 左边界对齐
59892
+ break;
59893
+
59894
+ // 居中对齐系列(文本中心对齐原点)
59895
+ case TextAlign.TextCenter:
59896
+ case TextAlign.TextCenterBottom:
59897
+ case TextAlign.TextCenterMiddle:
59898
+ case TextAlign.TextCenterTop:
59899
+ offsetX = -(bbox.min.x + bbox.max.x) / 2; // 水平居中
59900
+ break;
59901
+
59902
+ // 右对齐系列(文本右边界对齐原点)
59903
+ case TextAlign.TextRight:
59904
+ case TextAlign.TextRightBottom:
59905
+ case TextAlign.TextRightMiddle:
59906
+ case TextAlign.TextRightTop:
59907
+ offsetX = -bbox.max.x; // 右边界对齐
59908
+ break;
59909
+ }
59910
+
59911
+ // 垂直对齐处理(Y轴方向)
59912
+ switch (align) {
59913
+ // 垂直居中系列
59914
+ case TextAlign.TextMiddle:
59915
+ case TextAlign.TextLeftMiddle:
59916
+ case TextAlign.TextCenterMiddle:
59917
+ case TextAlign.TextRightMiddle:
59918
+ offsetY = -(bbox.min.y + bbox.max.y) / 2; // 垂直居中
59919
+ break;
59920
+
59921
+ // 顶部对齐系列
59922
+ case TextAlign.TextTop:
59923
+ case TextAlign.TextLeftTop:
59924
+ case TextAlign.TextCenterTop:
59925
+ case TextAlign.TextRightTop:
59926
+ offsetY = -bbox.max.y; // 顶部对齐
59927
+ break;
59928
+
59929
+ // 底部对齐系列
59930
+ case TextAlign.TextBottom:
59931
+ case TextAlign.TextLeftBottom:
59932
+ case TextAlign.TextCenterBottom:
59933
+ case TextAlign.TextRightBottom:
59934
+ offsetY = -bbox.min.y; // 底部对齐
59935
+ break;
59936
+ }
59937
+
59938
+ // 创建对齐变换矩阵
59939
+ var alignMatrix = new Matrix4();
59940
+ alignMatrix.identity().makeTranslation(offsetX, offsetY, 0);
59941
+ return alignMatrix;
59942
+ }
59943
+
59843
59944
  // CONCATENATED MODULE: ./src/utils/threejs/rain-shader.js
59844
59945
 
59845
59946
  var RainShader = {
@@ -62500,7 +62601,7 @@ var component = normalizeComponent(
62500
62601
  )
62501
62602
 
62502
62603
  /* harmony default export */ var com_graphics = (component.exports);
62503
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44287e30-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-flcanvas/index.vue?vue&type=template&id=1eba8e28&scoped=true
62604
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"aa1018a6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-flcanvas/index.vue?vue&type=template&id=1eba8e28&scoped=true
62504
62605
  var com_flcanvasvue_type_template_id_1eba8e28_scoped_true_render = function render() {
62505
62606
  var _vm = this,
62506
62607
  _c = _vm._self._c;
@@ -65699,7 +65800,7 @@ var com_flcanvas_component = normalizeComponent(
65699
65800
  )
65700
65801
 
65701
65802
  /* harmony default export */ var com_flcanvas = (com_flcanvas_component.exports);
65702
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44287e30-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/per-control.vue?vue&type=template&id=f547d5c6&scoped=true
65803
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"aa1018a6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/per-control.vue?vue&type=template&id=f547d5c6&scoped=true
65703
65804
  var per_controlvue_type_template_id_f547d5c6_scoped_true_render = function render() {
65704
65805
  var _vm = this,
65705
65806
  _c = _vm._self._c;
@@ -65807,7 +65908,7 @@ var per_control_component = normalizeComponent(
65807
65908
  )
65808
65909
 
65809
65910
  /* harmony default export */ var per_control = (per_control_component.exports);
65810
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44287e30-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/pid.vue?vue&type=template&id=0ec35ee4&scoped=true
65911
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"aa1018a6-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/pid.vue?vue&type=template&id=0ec35ee4&scoped=true
65811
65912
  var pidvue_type_template_id_0ec35ee4_scoped_true_render = function render() {
65812
65913
  var _vm = this,
65813
65914
  _c = _vm._self._c;