Hi,
On 08.06.2012 12:07, ZuoJun Chen wrote:
Hi, Oliver
Thanks again for your patch to issue 119624. also I benefit a lot from
your response :)
Does the change from nLayoutInTableCell& 0x80008000 to nLayoutInTableCell
== 0x80008000 mean that
the value 0x80008000 is the flag indicates Layout in Table cell property
has been checked,
Yes, at least this reveals from my investigations.
while 0x80000000 isn't ? And I want to figure out the different meaning
between 0x80008000 and 0x80000000
since I cannot see further information except parameter 0x03BF indicates
the AutoFormat options
in MS Word binary format specification.
As I had never a deep look into this specification I do not know more.
My investigations results in the implementation of method
<SwWW8ImplReader::IsObjectLayoutInTableCell(..)>
- value == 0xFFFFFFFF means "LayoutInTableCell" is set
- value == 0x80008000 means "LayoutInTableCell" is set
- ( value & 0x02000000 AND
!(value & 0x80000000) ) means "LayoutInTableCell" is set
Best regards, Oliver.
2012/6/8 Oliver-Rainer Wittmann<[email protected]>
Hi,
On 07.06.2012 15:47, ZuoJun Chen wrote:
2012/6/7 Oliver-Rainer
Wittmann<orwittmann@**googlemail.com<[email protected]>
Hi,
On 07.06.2012 13:34, ZuoJun Chen wrote:
Hi, All,
There is an attribute for anchored objects named "Layout In Table
Cell
property" in MS Word.
WW8 filter will check this attribute when import shape in table. I am
puzzled that there are two hex magic number
0x80008000 and 0x80000000 in ww8graf.cxx Line 2483. From the
discussion in issue
84783<https://issues.apache.****org/ooo/show_bug.cgi?id=84783<**
https://issues.apache.org/ooo/**show_bug.cgi?id=84783<https://issues.apache.org/ooo/show_bug.cgi?id=84783>
**, I can see that
these
number may associate with MS Word Binary File Format Specification, not
sure
whether both number indicate that
"Layout in table cell" is set. I checked the documentation but didn't
found
more details. So I post this mail
to see if I could get any sort of advice.
I am the author of the corresponding method<SwWW8ImplReader::****
IsObjectLayoutInTableCell(..)>
containing the above "magic number" interpretation. As far as I remember
the initial implementation was done this issue 84783 and an adoption has
been made with issue 98037.
As far as I remembering it correct the implemented interpretation of this
"magic number" was done by the evaluation of different Microsoft Word
documents created with different Microsoft Office versions.
I am currently looking at issue 119624. The root cause of this issue
seems
to be related to my implemetation in method<SwWW8ImplReader::**
IsObjectLayoutInTableCell(..)>****.
I have to do some further investigations - please stay tuned for the
results.
Hi, Oliver,
Thank you for you reply. I think the number considering a flag to
indicate
whether the "Layout In Table Cell“ property has been checked.
However, when use nLayoutInTableCell& 0x80008000 to determine the
property. Both 0x80008000 or 0x80000000 can set the
bIsObjectLayoutInTableCell = true.
Do the two hex number represent same meaning?
No, I do not think so.
My implementation of the conditions in
method<SwWW8ImplReader::**IsObjectLayoutInTableCell(..)>
is wrong I think.
It must must be:
if ( nLayoutInTableCell == 0xFFFFFFFF || // no explicit attribute value
given
nLayoutInTableCell == 0x80008000 ||
^^
( nLayoutInTableCell& 0x02000000&&
!(nLayoutInTableCell& 0x80000000 ) ) )
{
bIsObjectLayoutInTableCell = true;
}
else
{
bIsObjectLayoutInTableCell = false;
}
Testing "nLayoutInTableCell& 0x80008000" in the second condition does not
make sense regarding the third condition.
The above change in one part of the fix for issue 119624 in order to get
the horizontal position correctly mapped. Because this a corrected method
<SwWW8ImplReader::**IsObjectLayoutInTableCell(..)> the following code
found in method<SwWW8ImplReader::**ProcessEscherAlign(..)> will apply:
// --> OD 2005-01-20 #118546# - if the object is anchored inside
// a table cell, is horizontal aligned at frame|character and
// has wrap through, but its attribute 'layout in table cell' isn't set,
// convert its horizontal alignment to page text area.
// --> OD 2008-04-10 #i84783# - use new method
<IsObjectLayoutInTableCell()>
if ( nInTable&&
( eHoriRel == text::RelOrientation::FRAME ||
eHoriRel == text::RelOrientation::CHAR )&&
pFSPA->nwr == 3&&
// pRecord->nLayoutInTableCell == 0x80000000 )
!IsObjectLayoutInTableCell( pRecord->nLayoutInTableCell ) )
{
eHoriRel = text::RelOrientation::PAGE_**PRINT_AREA;
}
//<--
I have attached a corresponding patch for the above code changes to issue
119624.
But, there are more defects with the import and layout of Microsoft Word
document given at issue 119624 - please my comments in this issue.
Best regards, Oliver.