1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/core/layout/geometry/physical_offset.h"
#include "third_party/blink/renderer/core/layout/geometry/logical_offset.h"
#include "third_party/blink/renderer/core/layout/geometry/physical_size.h"
#include "third_party/blink/renderer/platform/geometry/layout_point.h"
#include "third_party/blink/renderer/platform/geometry/layout_size.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
namespace blink {
LogicalOffset PhysicalOffset::ConvertToLogical(WritingMode mode,
TextDirection direction,
PhysicalSize outer_size,
PhysicalSize inner_size) const {
switch (mode) {
case WritingMode::kHorizontalTb:
if (direction == TextDirection::kLtr)
return LogicalOffset(left, top);
return LogicalOffset(outer_size.width - left - inner_size.width, top);
case WritingMode::kVerticalRl:
case WritingMode::kSidewaysRl:
if (direction == TextDirection::kLtr)
return LogicalOffset(top, outer_size.width - left - inner_size.width);
return LogicalOffset(outer_size.height - top - inner_size.height,
outer_size.width - left - inner_size.width);
case WritingMode::kVerticalLr:
if (direction == TextDirection::kLtr)
return LogicalOffset(top, left);
return LogicalOffset(outer_size.height - top - inner_size.height, left);
case WritingMode::kSidewaysLr:
if (direction == TextDirection::kLtr)
return LogicalOffset(outer_size.height - top - inner_size.height, left);
return LogicalOffset(top, left);
default:
NOTREACHED();
return LogicalOffset();
}
}
String PhysicalOffset::ToString() const {
return String::Format("%s,%s", left.ToString().Ascii().c_str(),
top.ToString().Ascii().c_str());
}
std::ostream& operator<<(std::ostream& os, const PhysicalOffset& value) {
return os << value.ToString();
}
} // namespace blink
|