示例#1
0
        /// <summary>
        /// </summary>
        /// <param name="placementDim"></param>
        /// <returns></returns>
        public int getPlacementDif(PlacementDim placementDim)
        {
            int result = 0;

#if !PocketPC
            //tmp
            bool containerRightToLeft = _tableManager.RightToLeftLayout;
#else
            bool containerRightToLeft = false;
#endif
            switch (placementDim)
            {
            case PlacementDim.PLACE_X:
            case PlacementDim.PLACE_DX:
                ILogicalColumn columnManager = _tableManager.ColumnsManager.getLgColumnByMagicIdx(MgColumn);
                int            dx            = columnManager.getDx();
                result = dx * _logicalControl.PlacementData.getPlacement(placementDim, containerRightToLeft) / 100;
                break;

            case PlacementDim.PLACE_Y:
            case PlacementDim.PLACE_DY:
                result = 0; // no Y placement in table's children
                break;

            default:
                break;
            }


            return(result);
        }
示例#2
0
        /// <summary>
        /// update the movement value according the dimension placement value.
        ///  copies from ctrl.cpp updateMoveValue
        /// </summary>
        /// <param name="placementData"></param>
        /// <param name="actualMove"></param>
        /// <param name="placementDim"></param>
        /// <returns></returns>
        static int updateMoveValue(PlacementData placementData, int actualMove, PlacementDim placementDim, int prevAxeMove, bool containerRightToLeft)
        {
            float remainder;
            float result;
            int   move;
            int   place   = placementData.getPlacement(placementDim, containerRightToLeft);
            float accMove = placementData.getAccCtrlMove(placementDim);

            if (place > 0 && place < 100)
            {
                result    = (float)(actualMove * place) / 100;
                move      = (int)((actualMove * place) / 100);
                remainder = result - move;
                accMove  += remainder;
                if (accMove >= 1 || accMove <= -1)
                {
                    move += (int)accMove;
                    if (move > 0)
                    {
                        accMove -= 1;
                    }
                    else
                    {
                        accMove += 1;
                    }
                }
            }
            else
            if (place == 0)   // no placement
            {
                move = 0;
            }
            else
            {
                move = actualMove;  // placement is 100%
            }
            placementData.setAccCtrlMove(placementDim, accMove);

            return(move);
        }
示例#3
0
        /// <summary>
        /// Fix Rounding mistakes caused by placement calculations
        /// </summary>
        /// <param name="originPlacement"> placement of the origine (x or y placement) </param>
        /// <param name="lengthPlacement"> widht or height placement (dx or dy placement)</param>
        /// <param name="totalChange"> total change for control</param>
        /// <param name="axe"> X or Y axe</param>
        /// <param name="placementData"> placement data</param>
        /// <param name="containerRightToLeft">RightToLeft</param>
        /// <returns></returns>
        static int fixRounding(int originPlacement, int lengthPlacement, int totalChange, Axe axe, PlacementData placementData, bool containerRightToLeft)
        {
            PlacementDim originPlacementDim = axe == Axe.X ? PlacementDim.PLACE_X : PlacementDim.PLACE_Y;
            PlacementDim lengthPlacementDim = axe == Axe.X ? PlacementDim.PLACE_DX : PlacementDim.PLACE_DY;

            if (placementData.getPlacement(originPlacementDim, containerRightToLeft) + placementData.getPlacement(lengthPlacementDim, containerRightToLeft) == 100)
            {
                //total placement is 100% this means that originPlacement + lengthPlacement MUST BE EQUAL to totalChange
                //there are may be some mistakes caused by rounding of float numbers to integer, we must fix them
                //If these small mistakes are not fix - scroll bar might be created when it is not needed
                if (Math.Abs(originPlacement + lengthPlacement) != Math.Abs(totalChange))
                {
                    int   diff    = totalChange - (originPlacement + lengthPlacement);
                    float accMove = placementData.getAccCtrlMove(lengthPlacementDim);
                    //recalculate length placement
                    lengthPlacement += diff;
                    //update AccCtrlMove for future placement
                    placementData.setAccCtrlMove(lengthPlacementDim, accMove + diff);
                }
            }
            return(lengthPlacement);
        }
示例#4
0
 /**
  *  set accCtrlMove according the dimention placement value.
  * @param placementDim
  * @param accCtrlMove
  */
 public void setAccCtrlMove(PlacementDim placementDim, float accCtrlMove)
 {
     if (placementDim == PlacementDim.PLACE_DX)
     {
         _accCtrlMoveDx = accCtrlMove;
     }
     else if (placementDim == PlacementDim.PLACE_X)
     {
         _accCtrlMoveX = accCtrlMove;
     }
     else if (placementDim == PlacementDim.PLACE_DY)
     {
         _accCtrlMoveDy = accCtrlMove;
     }
     else if (placementDim == PlacementDim.PLACE_Y)
     {
         _accCtrlMoveY = accCtrlMove;
     }
     else
     {
         Debug.Assert(false);
     }
 }
示例#5
0
        /// <summary>
        ///   return difference caused by placement
        /// </summary>
        /// <param name = "placementDim"></param>
        /// <returns></returns>
        public int getPlacementDif(PlacementDim placementDim)
        {
            int result = 0;

#if !PocketPC
            //tmp
            bool containerRightToLeft = _containerControl.RightToLeft == RightToLeft.Yes;
#else
            bool containerRightToLeft = false;
#endif
            switch (placementDim)
            {
            case PlacementDim.PLACE_X:
                result = _logicalControlsContainer.SizeChange.X *
                         _lg.PlacementData.getPlacement(placementDim, containerRightToLeft) / 100;
                result -= _logicalControlsContainer.NegativeOffset;
                break;

            case PlacementDim.PLACE_DX:
                result = _logicalControlsContainer.SizeChange.X *
                         _lg.PlacementData.getPlacement(placementDim, containerRightToLeft) / 100;
                break;

            case PlacementDim.PLACE_Y:
            case PlacementDim.PLACE_DY:
                result = _logicalControlsContainer.SizeChange.Y *
                         _lg.PlacementData.getPlacement(placementDim, containerRightToLeft) / 100;
                break;

            default:
                break;
            }


            return(result);
        }
示例#6
0
 /**
  * return saved  accCtrlMove according the dimention placement value.
  * @param placementDim
  * @return
  */
 public float getAccCtrlMove(PlacementDim placementDim)
 {
     if (placementDim == PlacementDim.PLACE_DX)
     {
         return(_accCtrlMoveDx);
     }
     else if (placementDim == PlacementDim.PLACE_X)
     {
         return(_accCtrlMoveX);
     }
     else if (placementDim == PlacementDim.PLACE_DY)
     {
         return(_accCtrlMoveDy);
     }
     else if (placementDim == PlacementDim.PLACE_Y)
     {
         return(_accCtrlMoveY);
     }
     else
     {
         Debug.Assert(false);
         return(0);
     }
 }
示例#7
0
        /**
         * get accCtrlMove according the dimention placement value.
         * @param placementDim
         *
         * @return
         */

        public int getPlacement(PlacementDim placementDim, bool containerRightToLeft)
        {
            if (placementDim == PlacementDim.PLACE_DX)
            {
                return(Placement.Width);
            }
            else if (placementDim == PlacementDim.PLACE_X)
            {
                return(containerRightToLeft ? 100 - Placement.X : Placement.X);
            }
            else if (placementDim == PlacementDim.PLACE_DY)
            {
                return(Placement.Height);
            }
            else if (placementDim == PlacementDim.PLACE_Y)
            {
                return(Placement.Y);
            }
            else
            {
                Debug.Assert(false);
                return(0);
            }
        }
 public int getPlacementDif(PlacementDim placementDim)
 {
     return(_coordinator.getPlacementDif(placementDim));
 }