diff --git a/Designing/WinJWDConst.lua b/Designing/WinJWDConst.lua index 533d7a0..0c4da6d 100644 --- a/Designing/WinJWDConst.lua +++ b/Designing/WinJWDConst.lua @@ -31,6 +31,7 @@ JWD_VALUE = 'Value' JWD_ID_GROUP = 'GroupId' JWD_ID_SASH = 'SashId' JWD_MEASURE_TYPE = 'MeasureType' +JWD_ELEMENT_DIMENSION = 'ElementDimensionList' JWD_FRAME_SHAPE = 'Shape' JWD_DIMENSION_LIST = 'DimensionList' @@ -46,6 +47,9 @@ JWD_SPLIT_TYPE = 'SplitShape' JWD_SPLIT_START_VERT = 'SplitStartVert' JWD_SPLIT_VERT_POS = 'SplitVertList' JWD_SPLIT_HORIZ_POS = 'SplitHorizList' +JWD_SPLIT_AREA = 'Area' +JWD_ELEMENT_VERT_DIMENSION = 'ElementDimVertList' +JWD_ELEMENT_HORIZ_DIMENSION = 'ElementDimHorizList' JWD_FILL_TYPE = 'FillType' diff --git a/Designing/WinLib/WinManageProject.lua b/Designing/WinLib/WinManageProject.lua index 6e5afd3..e9db811 100644 --- a/Designing/WinLib/WinManageProject.lua +++ b/Designing/WinLib/WinManageProject.lua @@ -47,6 +47,19 @@ local function GetDimensions( tDimensions) return vDims end +--------------------------------------------------------------------- +local function GetSplitDimensions( tDimensions) + local vDims = {} + for i = 1, #tDimensions do + local nIndex = tDimensions[i][JWD_INDEX] + local nArea = tDimensions[i][JWD_SPLIT_AREA] + if not vDims[nArea] then + vDims[nArea] = {} + end + vDims[nArea][nIndex] = tDimensions[i][JWD_VALUE] + end + return vDims +end --------------------------------------------------------------------- local function GetFrameShape( sShape) @@ -192,9 +205,10 @@ local function ConvertTableToGeometry( AreaTable, nParentId) local nType = GetFrameShape( AreaTable[JWD_FRAME_SHAPE]) local vJoints = GetJoints( AreaTable[JWD_JOINTS]) local vDim = GetDimensions( AreaTable[JWD_DIMENSION_LIST]) + local vElementDim = GetDimensions( AreaTable[JWD_ELEMENT_DIMENSION]) -- creo il telaio - local nAreaId = WinCreate.CreateFrame( nType, vDim, vJoints, {}, nAreaNbr) + local nAreaId = WinCreate.CreateFrame( nType, vDim, vJoints, vElementDim, nAreaNbr) if not nAreaId then return end @@ -239,7 +253,8 @@ local function ConvertTableToGeometry( AreaTable, nParentId) if #tSashes == 1 then local vJoints = GetJoints( tSashes[1][JWD_JOINTS]) local nOpeningType = GetOpeningType( tSashes[1][JWD_OPENING_TYPE]) - local nAreaId = WinCreate.AddSash( nParentId, vJoints, {}, nOpeningType, nAreaNbr) + local vElementDim = GetDimensions( tSashes[1][JWD_ELEMENT_DIMENSION]) + local nAreaId = WinCreate.AddSash( nParentId, vJoints, vElementDim, nOpeningType, nAreaNbr) -- aggiungo ferramenta sull'anta local sHandleSide if nOpeningType == WIN_OPENING_TYPES.TURNONLY_LEFT or @@ -277,7 +292,7 @@ local function ConvertTableToGeometry( AreaTable, nParentId) vOpeningTypes[i] = GetOpeningType( tSashes[i][JWD_OPENING_TYPE]) vSashNbrs[i] = tSashes[i][JWD_ID_SASH] vJoints[i] = GetJoints( tSashes[i][JWD_JOINTS]) - vPartsDim[i] = {} + vPartsDim[i] = GetDimensions( tSashes[i][JWD_ELEMENT_DIMENSION]) end local vSashTypes, sHandleSide = GetSashTypes( tSashes, vOpeningTypes) @@ -308,6 +323,7 @@ local function ConvertTableToGeometry( AreaTable, nParentId) elseif AreaTable[JWD_AREA_TYPE] == 'SPLIT' then local vVertDimensions = {} local vVertMeasureType = {} + local vVertElementDimension = GetSplitDimensions(AreaTable[JWD_ELEMENT_VERT_DIMENSION]) local vSplitVertDimensions = AreaTable[JWD_SPLIT_VERT_POS] for i = 1, #vSplitVertDimensions do vVertMeasureType[i] = GetMeasureType( vSplitVertDimensions[i][JWD_MEASURE_TYPE]) @@ -315,6 +331,7 @@ local function ConvertTableToGeometry( AreaTable, nParentId) end local vHorizDimensions = {} local vHorizMeasureType = {} + local vHorizElementDimension = GetSplitDimensions(AreaTable[JWD_ELEMENT_HORIZ_DIMENSION]) local vSplitHorizDimensions = AreaTable[JWD_SPLIT_HORIZ_POS] for i = 1, #vSplitHorizDimensions do vHorizMeasureType[i] = GetMeasureType( vSplitHorizDimensions[i][JWD_MEASURE_TYPE]) @@ -322,11 +339,23 @@ local function ConvertTableToGeometry( AreaTable, nParentId) end local vSplitAreas if AreaTable[JWD_SPLIT_TYPE] == 'GRID' then - vSplitAreas = WinCreate.AddGridSplits( nParentId, vVertMeasureType, vVertDimensions, vHorizMeasureType, vHorizDimensions, AreaTable[JWD_SPLIT_START_VERT], {}, nAreaNbr) + local vElementDimension = {} + if AreaTable[JWD_SPLIT_START_VERT] then + vElementDimension = vVertElementDimension[0] + for i = 1, #vHorizElementDimension do + EgtJoinTables( vElementDimension, vHorizElementDimension[i]) + end + else + vElementDimension = vHorizElementDimension[0] + for i = 1, #vVertElementDimension do + EgtJoinTables( vElementDimension, vVertElementDimension[i]) + end + end + vSplitAreas = WinCreate.AddGridSplits( nParentId, vVertMeasureType, vVertDimensions, vHorizMeasureType, vHorizDimensions, AreaTable[JWD_SPLIT_START_VERT], vElementDimension, nAreaNbr) elseif AreaTable[JWD_SPLIT_TYPE] == 'VERTICAL' then - vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.VERTICAL, vVertMeasureType, vVertDimensions, {}, false, nAreaNbr) + vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.VERTICAL, vVertMeasureType, vVertDimensions, vVertElementDimension[0], false, nAreaNbr) else - vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.HORIZONTAL, vHorizMeasureType, vHorizDimensions, {}, false, nAreaNbr) + vSplitAreas = WinCreate.AddSplits( nParentId, WIN_SPLITORIENTATION.HORIZONTAL, vHorizMeasureType, vHorizDimensions, vHorizElementDimension[0], false, nAreaNbr) end for i = 1, #vSplitAreas do ConvertTableToGeometry( AreaTable[JWD_AREA_LIST][i], vSplitAreas[i])