Commit bc7964f3 authored by Anna.Pavlova's avatar Anna.Pavlova Committed by Alexander.Trofimov

Поправлены баги с перемещением по стрелкам

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@55841 954022d7-b5bf-4e40-9824-e11837661b57
parent 37be95b8
...@@ -705,7 +705,6 @@ ParaMath.prototype = ...@@ -705,7 +705,6 @@ ParaMath.prototype =
this.Paragraph.Refresh_RecalcData2(0); this.Paragraph.Refresh_RecalcData2(0);
}, },
Recalculate_MinMaxContentWidth : function(MinMax) Recalculate_MinMaxContentWidth : function(MinMax)
{ {
// TODO: Если формула не измерена, тогда здесь её надо измерить // TODO: Если формула не измерена, тогда здесь её надо измерить
...@@ -757,6 +756,50 @@ ParaMath.prototype = ...@@ -757,6 +756,50 @@ ParaMath.prototype =
} }
}, },
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Функция для работы с дефолтными текстовыми настройками и argSize для формулы
//-----------------------------------------------------------------------------------
ApplyArgSize : function(oWPrp)
{
var tPrp = new CTextPr();
var defaultWPrp =
{
FontFamily: {Name : "Cambria Math", Index : -1 },
FontSize: 11,
Italic: true,
Bold: false,
RFonts: {},
Lang: {}
};
tPrp.Merge(defaultWPrp);
tPrp.Merge(oWPrp);
var FSize = tPrp.FontSize;
if(this.argSize == -1)
{
//aa: 0.0013 bb: 0.66 cc: 0.5
//aa: 0.0009 bb: 0.68 cc: 0.26
FSize = 0.0009*FSize*FSize + 0.68*FSize + 0.26;
//FSize = 0.001*FSize*FSize + 0.723*FSize - 1.318;
//FSize = 0.0006*FSize*FSize + 0.743*FSize - 1.53;
}
else if(this.argSize == -2)
{
// aa: -0.0004 bb: 0.66 cc: 0.87
// aa: -0.0014 bb: 0.71 cc: 0.39
// aa: 0 bb: 0.63 cc: 1.11
//FSize = 0.63*FSize + 1.11;
FSize = -0.0004*FSize*FSize + 0.66*FSize + 0.87;
//tPrp.FontSize *= 0.473;
}
tPrp.FontSize = FSize;
oWPrp.Merge(tPrp);
},
//-----------------------------------------------------------------------------------
// Функции отрисовки // Функции отрисовки
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
Draw_HighLights : function(PDSH) Draw_HighLights : function(PDSH)
...@@ -932,6 +975,15 @@ ParaMath.prototype = ...@@ -932,6 +975,15 @@ ParaMath.prototype =
var Pos = ContentPos.Get(Depth); var Pos = ContentPos.Get(Depth);
this.State.ContentPos = Pos; this.State.ContentPos = Pos;
console.log("Set_ParaContentPos");
var str = "";
for(var i = 0; i < ContentPos.Data.length; i++)
{
str += ContentPos.Data[i] + " ";
}
console.log(str);
this.Root.Set_ParaContentPos(ContentPos, Depth); this.Root.Set_ParaContentPos(ContentPos, Depth);
}, },
Get_PosByElement : function(Class, ContentPos, Depth, UseRange, Range, Line) Get_PosByElement : function(Class, ContentPos, Depth, UseRange, Range, Line)
...@@ -950,6 +1002,16 @@ ParaMath.prototype = ...@@ -950,6 +1002,16 @@ ParaMath.prototype =
{ {
// TODO: ParaMath.Get_LeftPos // TODO: ParaMath.Get_LeftPos
var result = this.Root.Get_LeftPos(SearchPos, ContentPos, Depth, UseContentPos, false); var result = this.Root.Get_LeftPos(SearchPos, ContentPos, Depth, UseContentPos, false);
console.log("Get_LeftPos");
var str = "";
for(var i = 0; i < SearchPos.Pos.Data.length; i++)
{
str += SearchPos.Pos.Data[i] + " ";
}
console.log(str);
return result; return result;
}, },
......
...@@ -745,10 +745,12 @@ ParaRun.prototype = ...@@ -745,10 +745,12 @@ ParaRun.prototype =
} }
} }
return { X : X, Y : TargetY, Height : Height, Internal : { Line : CurLine, Page : CurPage, Range : CurRange } }; return { X : X, Y : TargetY, Height : Height, Internal : { Line : CurLine, Page : CurPage, Range : CurRange } };
} }
else else
return { X : X, Y : Y, PageNum : CurPage + Para.Get_StartPage_Absolute(), Internal : { Line : CurLine, Page : CurPage, Range : CurRange } }; return { X : X, Y : Y, PageNum : CurPage + Para.Get_StartPage_Absolute(), Internal : { Line : CurLine, Page : CurPage, Range : CurRange } };
} }
return { X : X, Y: Y, Internal : { Line : CurLine, Page : CurPage, Range : CurRange } }; return { X : X, Y: Y, Internal : { Line : CurLine, Page : CurPage, Range : CurRange } };
...@@ -4081,7 +4083,7 @@ ParaRun.prototype = ...@@ -4081,7 +4083,7 @@ ParaRun.prototype =
TextPr.Merge(MPrp); // bold, italic TextPr.Merge(MPrp); // bold, italic
} }
this.Parent.applyArgSize(TextPr); this.Parent.Composition.Parent.ApplyArgSize(TextPr);
} }
else else
TextPr.Merge( this.Pr ); // Мержим прямые настройки данного рана TextPr.Merge( this.Pr ); // Мержим прямые настройки данного рана
...@@ -6413,7 +6415,6 @@ CParaRunLine.prototype = ...@@ -6413,7 +6415,6 @@ CParaRunLine.prototype =
return NewLine; return NewLine;
}, },
Compare : function(OtherLine, CurRange) Compare : function(OtherLine, CurRange)
{ {
// Сначала проверим наличие данного отрезка в обеих строках // Сначала проверим наличие данного отрезка в обеих строках
...@@ -6765,7 +6766,7 @@ ParaRun.prototype.Math_Update_Cursor = function(X, Y, CurPage, UpdateTarget) ...@@ -6765,7 +6766,7 @@ ParaRun.prototype.Math_Update_Cursor = function(X, Y, CurPage, UpdateTarget)
{ {
this.Paragraph.DrawingDocument.SetTargetSize(sizeCursor); this.Paragraph.DrawingDocument.SetTargetSize(sizeCursor);
//Para.DrawingDocument.UpdateTargetFromPaint = true; //Para.DrawingDocument.UpdateTargetFromPaint = true;
this.Paragraph.DrawingDocument.UpdateTarget( X, Y, this.Paragraph.Get_StartPage_Absolute() + CurPage ); this.Paragraph.DrawingDocument.UpdateTarget(X, Y, this.Paragraph.Get_StartPage_Absolute() + CurPage );
//Para.DrawingDocument.UpdateTargetFromPaint = false; //Para.DrawingDocument.UpdateTargetFromPaint = false;
} }
......
...@@ -637,9 +637,16 @@ function CAccent() ...@@ -637,9 +637,16 @@ function CAccent()
this.kind = MATH_ACCENT; this.kind = MATH_ACCENT;
this.operator = new COperator(OPER_ACCENT); this.operator = new COperator(OPER_ACCENT);
this.Pr =
{
code: null,
typeOper: null
};
this.code = null; // храним код буквы и тип здесь this.code = null; // храним код буквы и тип здесь
this.typeOper = null; // т.к в класах, которые вызываем, не учитываем случаи, когда элементы (стрелки/скобки) переворачиваются this.typeOper = null; // т.к в класах, которые вызываем, не учитываем случаи, когда элементы (стрелки/скобки) переворачиваются
this.loc = LOCATION_TOP; this.loc = LOCATION_TOP;
CCharacter.call(this); CCharacter.call(this);
} }
extend(CAccent, CCharacter); extend(CAccent, CCharacter);
...@@ -1139,9 +1146,19 @@ CAccent.prototype.init = function(properties) ...@@ -1139,9 +1146,19 @@ CAccent.prototype.init = function(properties)
this.operator = operator; this.operator = operator;
this.operator.relate(this); this.operator.relate(this);
////
// TO DO
// убрать
//
this.typeOper = typeOper; this.typeOper = typeOper;
this.code = codeChr; this.code = codeChr;
////
this.Pr.typeOper = typeOper;
this.Pr.code = codeChr;
this.setDimension(1, 1); this.setDimension(1, 1);
this.setContent(); this.setContent();
...@@ -1165,7 +1182,7 @@ CAccent.prototype.setPosition = function(pos) ...@@ -1165,7 +1182,7 @@ CAccent.prototype.setPosition = function(pos)
// выставить правильно смещение для остальных значков // выставить правильно смещение для остальных значков
// для обычных текстовых значков (ACCENT_SIGN) выставлено // для обычных текстовых значков (ACCENT_SIGN) выставлено
if(this.typeOper == ACCENT_SIGN) if(this.Pr.typeOper == ACCENT_SIGN)
y1 = this.pos.y - this.shiftOperator + this.size.ascent; //shiftOperator to "CCharacter" y1 = this.pos.y - this.shiftOperator + this.size.ascent; //shiftOperator to "CCharacter"
else else
y1 = this.pos.y; y1 = this.pos.y;
......
...@@ -26,6 +26,8 @@ function CMathBase() ...@@ -26,6 +26,8 @@ function CMathBase()
this.SelectEnd_X = 0; this.SelectEnd_X = 0;
this.SelectEnd_Y = 0; this.SelectEnd_Y = 0;
this.bSelectionUse = false;
this.nRow = 0; this.nRow = 0;
this.nCol = 0; this.nCol = 0;
...@@ -62,6 +64,10 @@ function CMathBase() ...@@ -62,6 +64,10 @@ function CMathBase()
} }
CMathBase.prototype = CMathBase.prototype =
{ {
init_2: function(props)
{
this.Pr = Common_CopyObj(props);
},
setContent: function() setContent: function()
{ {
this.elements = new Array(); this.elements = new Array();
...@@ -1328,6 +1334,12 @@ CMathBase.prototype = ...@@ -1328,6 +1334,12 @@ CMathBase.prototype =
this.CurPos_Y = CurPos_Y; this.CurPos_Y = CurPos_Y;
} }
/*this.SelectStart_X = this.CurPos_X;
this.SelectStart_Y = this.CurPos_Y;
this.SelectEnd_X = this.CurPos_X;
this.SelectEnd_Y = this.CurPos_Y;*/
Depth += 2; Depth += 2;
...@@ -1401,7 +1413,14 @@ CMathBase.prototype = ...@@ -1401,7 +1413,14 @@ CMathBase.prototype =
}, },
GetSelectContent: function() GetSelectContent: function()
{ {
return this.elements[this.SelectStart_X][this.SelectStart_Y].GetSelectContent(); var result;
if(this.bSelectionUse)
result = this.elements[this.SelectStart_X][this.SelectStart_Y].GetSelectContent();
else
result = this.elements[this.CurPos_X][this.CurPos_Y].GetSelectContent();
return result;
}, },
Selection_DrawRange: function(CurLine, CurPage, SelectionDraw) // первые два параметра нужны только для аналогичной функции в ParaRun Selection_DrawRange: function(CurLine, CurPage, SelectionDraw) // первые два параметра нужны только для аналогичной функции в ParaRun
{ {
...@@ -1423,6 +1442,7 @@ CMathBase.prototype = ...@@ -1423,6 +1442,7 @@ CMathBase.prototype =
if(start_X !== -1 && start_Y !== -1) if(start_X !== -1 && start_Y !== -1)
this.elements[start_X][start_Y].Selection_Remove(); this.elements[start_X][start_Y].Selection_Remove();
this.bSelectionUse = false;
}, },
Get_LeftPos: function(SearchPos, ContentPos, Depth, UseContentPos, EndRun) Get_LeftPos: function(SearchPos, ContentPos, Depth, UseContentPos, EndRun)
{ {
...@@ -1447,7 +1467,7 @@ CMathBase.prototype = ...@@ -1447,7 +1467,7 @@ CMathBase.prototype =
while(CurPos_Y >= 0) while(CurPos_Y >= 0)
{ {
var bJDraw = this.elements[CurPos_X][CurPos_Y].IsJustDraw(), var bJDraw = this.elements[CurPos_X][CurPos_Y].IsJustDraw(),
usePlh = bUseContent && this.elements[CurPos_X][CurPos_Y].IsPlaceholder(); usePlh = !bJDraw && bUseContent && this.elements[CurPos_X][CurPos_Y].IsPlaceholder();
if(!bJDraw && ! usePlh) if(!bJDraw && ! usePlh)
{ {
...@@ -1500,7 +1520,7 @@ CMathBase.prototype = ...@@ -1500,7 +1520,7 @@ CMathBase.prototype =
while(CurPos_Y < this.nCol) while(CurPos_Y < this.nCol)
{ {
var bJDraw = this.elements[CurPos_X][CurPos_Y].IsJustDraw(), var bJDraw = this.elements[CurPos_X][CurPos_Y].IsJustDraw(),
usePlh = bUseContent && this.elements[CurPos_X][CurPos_Y].IsPlaceholder(); usePlh = !bJDraw && bUseContent && this.elements[CurPos_X][CurPos_Y].IsPlaceholder();
if(!bJDraw && ! usePlh) if(!bJDraw && ! usePlh)
{ {
...@@ -1530,6 +1550,10 @@ CMathBase.prototype = ...@@ -1530,6 +1550,10 @@ CMathBase.prototype =
return result; return result;
},
IsPlaceholder: function()
{
return false;
} }
////////////////////////// //////////////////////////
......
...@@ -59,7 +59,6 @@ CBorderBox.prototype.init = function(props) ...@@ -59,7 +59,6 @@ CBorderBox.prototype.init = function(props)
this.setDimension(1, 1); this.setDimension(1, 1);
this.setContent(); this.setContent();
/// вызов этой функции обязательно в конце /// вызов этой функции обязательно в конце
this.WriteContentsToHistory(); this.WriteContentsToHistory();
} }
......
...@@ -53,10 +53,6 @@ CFraction.prototype.init = function(props) ...@@ -53,10 +53,6 @@ CFraction.prototype.init = function(props)
/// вызов этой функции обязательно в конце /// вызов этой функции обязательно в конце
this.WriteContentsToHistory(); this.WriteContentsToHistory();
}
CFraction.prototype.init_2 = function(props)
{
} }
CFraction.prototype.getType = function() CFraction.prototype.getType = function()
{ {
......
...@@ -823,6 +823,9 @@ CMPrp.prototype = ...@@ -823,6 +823,9 @@ CMPrp.prototype =
// 1. (!!) повтор IsIncline, IsHighElement // 1. (!!) повтор IsIncline, IsHighElement
// TODO List
// посмотреть баг, когда выходим за пределы мат объекта и добавляем букву
function CMathContent() function CMathContent()
{ {
this.Id = g_oIdCounter.Get_NewId(); this.Id = g_oIdCounter.Get_NewId();
...@@ -862,6 +865,7 @@ function CMathContent() ...@@ -862,6 +865,7 @@ function CMathContent()
/////////////////////////////// ///////////////////////////////
this.bSelectionUse = false;
this.SelectStartPos = 0; this.SelectStartPos = 0;
this.SelectEndPos = 0; this.SelectEndPos = 0;
...@@ -5809,6 +5813,7 @@ CMathContent.prototype = ...@@ -5809,6 +5813,7 @@ CMathContent.prototype =
}, },
/// For Para Math /// For Para Math
Recalculate_CurPos : function(_X, Y, CurrentRun, _CurRange, _CurLine, _CurPage, UpdateCurPos, UpdateTarget, ReturnTarget) Recalculate_CurPos : function(_X, Y, CurrentRun, _CurRange, _CurLine, _CurPage, UpdateCurPos, UpdateTarget, ReturnTarget)
{ {
var result; var result;
...@@ -5846,7 +5851,6 @@ CMathContent.prototype = ...@@ -5846,7 +5851,6 @@ CMathContent.prototype =
//Para.DrawingDocument.UpdateTargetFromPaint = true; //Para.DrawingDocument.UpdateTargetFromPaint = true;
this.Composition.Parent.Paragraph.DrawingDocument.UpdateTarget( _X, Y, this.Composition.Parent.Paragraph.Get_StartPage_Absolute() + _CurPage ); this.Composition.Parent.Paragraph.DrawingDocument.UpdateTarget( _X, Y, this.Composition.Parent.Paragraph.Get_StartPage_Absolute() + _CurPage );
//console.log("X of placeholder " + _X);
result = {X: _X, Y: Y}; result = {X: _X, Y: Y};
} }
...@@ -5917,18 +5921,28 @@ CMathContent.prototype = ...@@ -5917,18 +5921,28 @@ CMathContent.prototype =
} }
} }
this.bSelectionUse = true;
}, },
GetSelectContent: function() GetSelectContent: function()
{ {
var startPos = this.SelectStartPos, var startPos, endPos;
endPos = this.SelectEndPos;
if(startPos > endPos) if(this.bSelectionUse)
{ {
var temp = startPos; startPos = this.SelectStartPos;
startPos = endPos; endPos = this.SelectEndPos;
endPos = temp;
if(startPos > endPos)
{
var temp = startPos;
startPos = endPos;
endPos = temp;
}
} }
else
startPos = endPos = this.CurPos;
var bEqual = startPos == endPos, var bEqual = startPos == endPos,
bNotSelectComp = bEqual ? this.content[startPos].typeObj === MATH_COMP && this.content[startPos].IsSelectEmpty() : false; bNotSelectComp = bEqual ? this.content[startPos].typeObj === MATH_COMP && this.content[startPos].IsSelectEmpty() : false;
...@@ -5936,13 +5950,9 @@ CMathContent.prototype = ...@@ -5936,13 +5950,9 @@ CMathContent.prototype =
var result; var result;
if(bNotSelectComp) if(bNotSelectComp)
{
result = this.content[startPos].GetSelectContent(); // startPos == endPos result = this.content[startPos].GetSelectContent(); // startPos == endPos
}
else else
{
result = {Content: this, Start: startPos, End: endPos}; result = {Content: this, Start: startPos, End: endPos};
}
return result; return result;
...@@ -6124,6 +6134,8 @@ CMathContent.prototype = ...@@ -6124,6 +6134,8 @@ CMathContent.prototype =
Set_ParaContentPos: function(ContentPos, Depth) Set_ParaContentPos: function(ContentPos, Depth)
{ {
this.CurPos = ContentPos.Get(Depth); this.CurPos = ContentPos.Get(Depth);
/*this.SelectStartPos = this.CurPos;
this.SelectEndPos = this.CurPos;*/
Depth++; Depth++;
...@@ -6352,6 +6364,8 @@ CMathContent.prototype = ...@@ -6352,6 +6364,8 @@ CMathContent.prototype =
this.SelectStartPos = this.CurPos; this.SelectStartPos = this.CurPos;
this.SelectEndPos = this.CurPos; this.SelectEndPos = this.CurPos;
this.bSelectionUse = false;
}, },
getElem: function(nNum) getElem: function(nNum)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment