void RichEdit::SetObjectPercent(int p) { if(objectpos >= 0) { RichObject obj = GetObject(); obj.SetSize(obj.GetPhysicalSize() * p / 100); obj.KeepRatio(true); ReplaceObject(obj); } }
void RichEdit::SetObjectPercent(int p) { if(objectpos >= 0) { RichObject obj = GetObject(); Size sz = obj.GetPhysicalSize() * p / 100; if(sz.cx > 0 && sz.cy > 0) { obj.SetSize(sz); obj.KeepRatio(true); ReplaceObject(obj); } } }
void RichQtfParser::ReadObject() { Flush(); RichObject obj; if(*term == '#') { term++; #ifdef CPU_64 obj = *(RichObject *)stou64(term, &term); #else obj = *(RichObject *)stou(term, &term); #endif term++; } else { String type; while(IsAlNum(*term) || *term == '_') type.Cat(*term++); Size sz; Key(':'); sz.cx = ReadNumber(); bool keepratio = false; if(Key('&')) keepratio = true; else Key('*'); sz.cy = ReadNumber(); int yd = 0; if(Key('/')) yd = GetNumber(); while(*term && (byte)*term < 32) term++; String odata; if(Key('`')) while(*term) { if(*term == '`') { term++; if(*term == '`') odata.Cat('`'); else break; } else if((byte)*term >= 32) odata.Cat(*term); term++; } else if(Key('(')) { const char *b = term; while(*term && *term != ')') term++; odata = Base64Decode(b, term); if(*term == ')') term++; } else { StringBuffer data; for(;;) { while(*term < 32 && *term > 0) term++; if((byte)*term >= ' ' && (byte)*term <= 127 || *term == '\0') break; byte seven = *term++; for(int i = 0; i < 7; i++) { while((byte)*term < 32 && (byte)*term > 0) term++; if((byte)*term >= ' ' && (byte)*term <= 127 || *term == '\0') break; data.Cat((*term++ & 0x7f) | ((seven << 7) & 0x80)); seven >>= 1; } } odata = data; } obj.Read(type, odata, sz, context); obj.KeepRatio(keepratio); obj.SetYDelta(yd); } paragraph.Cat(obj, format); }