Exemplo n.º 1
0
    public FreeConditionState(Tool tool, Condition condition, Geometry geometry) : base(tool, condition)
    {
        if (condition is FreeCondition)
        {
            this.condition = (FreeCondition)condition;
        }

        if (geometry is Function)
        {
            this.geometry = (Function)geometry;
        }
    }
Exemplo n.º 2
0
    public override Condition GenerateCondition(Geometry geometry, FormInput formInput)
    {
        bool valid = ValidateInput(geometry, formInput);

        if (!valid)
        {
            return(null);
        }

        FreeCondition condition = new FreeCondition(func.Getfomula(), func.Getindex());

        return(condition);
    }
Exemplo n.º 3
0
    private bool CheckAddCondition(FunctionCondition condition)
    {
        if (condition is FunctionCondition)
        {
            if (condition is FreeCondition)
            {
                freeCondition = (FreeCondition)condition;
                return(true);
            }
        }

        return(true);
    }
Exemplo n.º 4
0
    public override bool RemoveCondition(Condition condition)
    {
        if (!(condition is FreeCondition))
        {
            return(false);
        }
        if (condition is FreeCondition)
        {
            FreeCondition free = (FreeCondition)condition;
            geometry.RemoveGeoLine(geometry.Getline()[free.index - 1]);
            freeCondition = null;
            return(true);
        }

        return(false);
    }
Exemplo n.º 5
0
    private void AddState(Condition condition)
    {
        Type type = Type.GetType(tool.Name + "ConditionState");

        if (type != null)
        {
            ConditionState conditionState = (ConditionState)Activator.CreateInstance(type, tool, condition, geometry);
            //删除函数?
            conditionState.OnClickDelete = () => geoController.RemoveConditionOperation(condition);

            conditionState.OnElementHighlight = () =>
            {
                //获取当前state对应的geoline,让behaviour调用
                FreeCondition free = (FreeCondition)condition;
                Function      func = (Function)geometry;
                geometryBehaviour.HighlightLine(func.Getline()[free.index - 1]);
                func.Setfomula(func.Getline()[free.index - 1].Fomula());
            };
            stateController.AddConditionState(conditionState);
        }
    }