diff --git a/indexer/drawing_rule_def.hpp b/indexer/drawing_rule_def.hpp index ce7dd2158d..ef03251b93 100644 --- a/indexer/drawing_rule_def.hpp +++ b/indexer/drawing_rule_def.hpp @@ -30,6 +30,9 @@ namespace drule /// geo type of rule - can be one combined of ... enum rule_geo_t { node = 1, way = 2 }; + /// text field type - can be one of ... + enum text_type_t { text_type_name = 0, text_type_housename, text_type_housenumber }; + double const layer_base_priority = 2000; typedef buffer_vector KeysT; diff --git a/indexer/drawing_rules.cpp b/indexer/drawing_rules.cpp index d2fb39af84..149634006d 100644 --- a/indexer/drawing_rules.cpp +++ b/indexer/drawing_rules.cpp @@ -19,6 +19,16 @@ namespace { uint32_t const DEFAULT_BG_COLOR = 0xEEEEDD; + + drule::text_type_t GetTextType(string const & text) + { + if (text == "addr:housename") + return drule::text_type_housename; + else if (text == "addr:housenumber") + return drule::text_type_housenumber; + + return drule::text_type_name; + } } namespace drule { @@ -79,6 +89,11 @@ CaptionDefProto const * BaseRule::GetCaption(int) const return 0; } +text_type_t BaseRule::GetCaptionTextType(int) const +{ + return text_type_name; +} + CircleRuleProto const * BaseRule::GetCircle() const { return 0; @@ -236,8 +251,20 @@ namespace { T m_caption; + text_type_t m_textTypePrimary; + text_type_t m_textTypeSecondary; + public: - CaptionT(T const & r) : m_caption(r) {} + CaptionT(T const & r) : m_caption(r) + , m_textTypePrimary(text_type_name) + , m_textTypeSecondary(text_type_name) + { + if (m_caption.primary().has_text()) + m_textTypePrimary = GetTextType(m_caption.primary().text()); + + if (m_caption.has_secondary() && m_caption.secondary().has_text()) + m_textTypeSecondary = GetTextType(m_caption.secondary().text()); + } virtual CaptionDefProto const * GetCaption(int i) const { @@ -252,6 +279,17 @@ namespace return 0; } } + + virtual text_type_t GetCaptionTextType(int i) const + { + if (i == 0) + return m_textTypePrimary; + else + { + ASSERT_EQUAL ( i, 1, () ); + return m_textTypeSecondary; + } + } }; typedef CaptionT Caption; diff --git a/indexer/drawing_rules.hpp b/indexer/drawing_rules.hpp index ab9e92f956..af5cac8469 100644 --- a/indexer/drawing_rules.hpp +++ b/indexer/drawing_rules.hpp @@ -55,6 +55,7 @@ namespace drule virtual AreaRuleProto const * GetArea() const; virtual SymbolRuleProto const * GetSymbol() const; virtual CaptionDefProto const * GetCaption(int) const; + virtual text_type_t GetCaptionTextType(int) const; virtual CircleRuleProto const * GetCircle() const; virtual ShieldRuleProto const * GetShield() const; diff --git a/indexer/drules_struct.pb.cc b/indexer/drules_struct.pb.cc index c1450e53cf..f09838dbee 100644 --- a/indexer/drules_struct.pb.cc +++ b/indexer/drules_struct.pb.cc @@ -2035,6 +2035,7 @@ const int CaptionDefProto::kColorFieldNumber; const int CaptionDefProto::kStrokeColorFieldNumber; const int CaptionDefProto::kOffsetXFieldNumber; const int CaptionDefProto::kOffsetYFieldNumber; +const int CaptionDefProto::kTextFieldNumber; #endif // !_MSC_VER CaptionDefProto::CaptionDefProto() @@ -2054,12 +2055,14 @@ CaptionDefProto::CaptionDefProto(const CaptionDefProto& from) } void CaptionDefProto::SharedCtor() { + ::google::protobuf::internal::GetEmptyString(); _cached_size_ = 0; height_ = 0; color_ = 0u; stroke_color_ = 0u; offset_x_ = 0; offset_y_ = 0; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -2069,6 +2072,9 @@ CaptionDefProto::~CaptionDefProto() { } void CaptionDefProto::SharedDtor() { + if (text_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete text_; + } #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER if (this != &default_instance()) { #else @@ -2108,8 +2114,14 @@ void CaptionDefProto::Clear() { ::memset(&first, 0, n); \ } while (0) - if (_has_bits_[0 / 32] & 31) { - ZR_(height_, offset_y_); + if (_has_bits_[0 / 32] & 63) { + ZR_(height_, offset_x_); + offset_y_ = 0; + if (has_text()) { + if (text_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + text_->clear(); + } + } } #undef OFFSET_OF_FIELD_ @@ -2203,6 +2215,19 @@ bool CaptionDefProto::MergePartialFromCodedStream( } else { goto handle_unusual; } + if (input->ExpectTag(50)) goto parse_text; + break; + } + + // optional string text = 6; + case 6: { + if (tag == 50) { + parse_text: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_text())); + } else { + goto handle_unusual; + } if (input->ExpectAtEnd()) goto success; break; } @@ -2257,6 +2282,12 @@ void CaptionDefProto::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->offset_y(), output); } + // optional string text = 6; + if (has_text()) { + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 6, this->text(), output); + } + output->WriteRaw(unknown_fields().data(), unknown_fields().size()); // @@protoc_insertion_point(serialize_end:CaptionDefProto) @@ -2301,6 +2332,13 @@ int CaptionDefProto::ByteSize() const { this->offset_y()); } + // optional string text = 6; + if (has_text()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->text()); + } + } total_size += unknown_fields().size(); @@ -2333,6 +2371,9 @@ void CaptionDefProto::MergeFrom(const CaptionDefProto& from) { if (from.has_offset_y()) { set_offset_y(from.offset_y()); } + if (from.has_text()) { + set_text(from.text()); + } } mutable_unknown_fields()->append(from.unknown_fields()); } @@ -2356,6 +2397,7 @@ void CaptionDefProto::Swap(CaptionDefProto* other) { std::swap(stroke_color_, other->stroke_color_); std::swap(offset_x_, other->offset_x_); std::swap(offset_y_, other->offset_y_); + std::swap(text_, other->text_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.swap(other->_unknown_fields_); std::swap(_cached_size_, other->_cached_size_); diff --git a/indexer/drules_struct.pb.h b/indexer/drules_struct.pb.h index 90a6bf80d0..e1fd153ea9 100644 --- a/indexer/drules_struct.pb.h +++ b/indexer/drules_struct.pb.h @@ -912,6 +912,18 @@ class CaptionDefProto : public ::google::protobuf::MessageLite { inline ::google::protobuf::int32 offset_y() const; inline void set_offset_y(::google::protobuf::int32 value); + // optional string text = 6; + inline bool has_text() const; + inline void clear_text(); + static const int kTextFieldNumber = 6; + inline const ::std::string& text() const; + inline void set_text(const ::std::string& value); + inline void set_text(const char* value); + inline void set_text(const char* value, size_t size); + inline ::std::string* mutable_text(); + inline ::std::string* release_text(); + inline void set_allocated_text(::std::string* text); + // @@protoc_insertion_point(class_scope:CaptionDefProto) private: inline void set_has_height(); @@ -924,6 +936,8 @@ class CaptionDefProto : public ::google::protobuf::MessageLite { inline void clear_has_offset_x(); inline void set_has_offset_y(); inline void clear_has_offset_y(); + inline void set_has_text(); + inline void clear_has_text(); ::std::string _unknown_fields_; @@ -933,6 +947,7 @@ class CaptionDefProto : public ::google::protobuf::MessageLite { ::google::protobuf::uint32 color_; ::google::protobuf::uint32 stroke_color_; ::google::protobuf::int32 offset_x_; + ::std::string* text_; ::google::protobuf::int32 offset_y_; #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER friend void protobuf_AddDesc_drules_5fstruct_2eproto_impl(); @@ -2761,6 +2776,82 @@ inline void CaptionDefProto::set_offset_y(::google::protobuf::int32 value) { // @@protoc_insertion_point(field_set:CaptionDefProto.offset_y) } +// optional string text = 6; +inline bool CaptionDefProto::has_text() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void CaptionDefProto::set_has_text() { + _has_bits_[0] |= 0x00000020u; +} +inline void CaptionDefProto::clear_has_text() { + _has_bits_[0] &= ~0x00000020u; +} +inline void CaptionDefProto::clear_text() { + if (text_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + text_->clear(); + } + clear_has_text(); +} +inline const ::std::string& CaptionDefProto::text() const { + // @@protoc_insertion_point(field_get:CaptionDefProto.text) + return *text_; +} +inline void CaptionDefProto::set_text(const ::std::string& value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + text_ = new ::std::string; + } + text_->assign(value); + // @@protoc_insertion_point(field_set:CaptionDefProto.text) +} +inline void CaptionDefProto::set_text(const char* value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + text_ = new ::std::string; + } + text_->assign(value); + // @@protoc_insertion_point(field_set_char:CaptionDefProto.text) +} +inline void CaptionDefProto::set_text(const char* value, size_t size) { + set_has_text(); + if (text_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + text_ = new ::std::string; + } + text_->assign(reinterpret_cast(value), size); + // @@protoc_insertion_point(field_set_pointer:CaptionDefProto.text) +} +inline ::std::string* CaptionDefProto::mutable_text() { + set_has_text(); + if (text_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + text_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:CaptionDefProto.text) + return text_; +} +inline ::std::string* CaptionDefProto::release_text() { + clear_has_text(); + if (text_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = text_; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void CaptionDefProto::set_allocated_text(::std::string* text) { + if (text_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete text_; + } + if (text) { + set_has_text(); + text_ = text; + } else { + clear_has_text(); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:CaptionDefProto.text) +} + // ------------------------------------------------------------------- // CaptionRuleProto diff --git a/indexer/drules_struct.proto b/indexer/drules_struct.proto index 401a381004..887f29be65 100644 --- a/indexer/drules_struct.proto +++ b/indexer/drules_struct.proto @@ -69,6 +69,7 @@ message CaptionDefProto optional uint32 stroke_color = 3; optional int32 offset_x = 4; optional int32 offset_y = 5; + optional string text = 6; } message CaptionRuleProto diff --git a/render/feature_styler.cpp b/render/feature_styler.cpp index a4dd66f138..368afb33bf 100644 --- a/render/feature_styler.cpp +++ b/render/feature_styler.cpp @@ -102,15 +102,9 @@ namespace di // m_primaryText.clear(); //} - string houseNumber; - if (ftypes::IsBuildingChecker::Instance()(f)) - { - houseNumber = f.GetHouseNumber(); - // Mark houses without names/numbers so user can select them by single tap. - if (houseNumber.empty() && m_primaryText.empty()) - houseNumber = "·"; - } - bool const hasName = !m_primaryText.empty() || !houseNumber.empty(); + bool const isBuilding = ftypes::IsBuildingChecker::Instance()(f); + + bool const hasName = !m_primaryText.empty() || isBuilding; m_refText = f.GetRoadNumber(); @@ -159,6 +153,8 @@ namespace di bool hasSecondaryText = false; + drule::text_type_t textType = drule::text_type_name; + for (size_t i = 0; i < count; ++i) { double depth = keys[i].m_priority; @@ -211,6 +207,8 @@ namespace di CaptionDefProto const * pCap0 = m_rules[i].m_rule->GetCaption(0); if (pCap0) { + textType = m_rules[i].m_rule->GetCaptionTextType(0); + if (!m_hasPathText && hasName && (m_geometryType == feature::GEOM_LINE)) { m_hasPathText = true; @@ -232,13 +230,28 @@ namespace di m_secondaryText.clear(); } - // Get or concat house number if feature has one. - if (!houseNumber.empty()) + if (isBuilding) { - if (m_primaryText.empty() || houseNumber.find(m_primaryText) != string::npos) - houseNumber.swap(m_primaryText); - else - m_primaryText = m_primaryText + " (" + houseNumber + ")"; + string houseNumber = f.GetHouseNumber(); + // Mark houses without names/numbers so user can select them by single tap. + if (houseNumber.empty() && m_primaryText.empty()) + houseNumber = "·"; + + if (textType == drule::text_type_housenumber) + { + m_primaryText = move(houseNumber); + } + else if (textType == drule::text_type_name) + { + // Get or concat house number if feature has one. + if (!houseNumber.empty()) + { + if (m_primaryText.empty() || houseNumber.find(m_primaryText) != string::npos) + m_primaryText = move(houseNumber); + else + m_primaryText = m_primaryText + " (" + houseNumber + ")"; + } + } } // placing a text on the path diff --git a/tools/python/stylesheet/drules_struct_pb2.py b/tools/python/stylesheet/drules_struct_pb2.py index 1a177d2b50..ff3f6c8237 100644 --- a/tools/python/stylesheet/drules_struct_pb2.py +++ b/tools/python/stylesheet/drules_struct_pb2.py @@ -19,7 +19,7 @@ _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor.FileDescriptor( name='drules_struct.proto', package='', - serialized_pb=_b('\n\x13\x64rules_struct.proto\"*\n\x0c\x44\x61shDotProto\x12\n\n\x02\x64\x64\x18\x01 \x03(\x01\x12\x0e\n\x06offset\x18\x02 \x01(\x01\":\n\x0cPathSymProto\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x0c\n\x04step\x18\x02 \x02(\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x01\"\xaf\x01\n\rLineRuleProto\x12\r\n\x05width\x18\x01 \x02(\x01\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x1e\n\x07\x64\x61shdot\x18\x03 \x01(\x0b\x32\r.DashDotProto\x12\x10\n\x08priority\x18\x04 \x02(\x05\x12\x1e\n\x07pathsym\x18\x05 \x01(\x0b\x32\r.PathSymProto\x12\x17\n\x04join\x18\x06 \x01(\x0e\x32\t.LineJoin\x12\x15\n\x03\x63\x61p\x18\x07 \x01(\x0e\x32\x08.LineCap\"\x9c\x01\n\x0cLineDefProto\x12\r\n\x05width\x18\x01 \x02(\x01\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x1e\n\x07\x64\x61shdot\x18\x03 \x01(\x0b\x32\r.DashDotProto\x12\x1e\n\x07pathsym\x18\x04 \x01(\x0b\x32\r.PathSymProto\x12\x17\n\x04join\x18\x06 \x01(\x0e\x32\t.LineJoin\x12\x15\n\x03\x63\x61p\x18\x07 \x01(\x0e\x32\x08.LineCap\"O\n\rAreaRuleProto\x12\r\n\x05\x63olor\x18\x01 \x02(\r\x12\x1d\n\x06\x62order\x18\x02 \x01(\x0b\x32\r.LineDefProto\x12\x10\n\x08priority\x18\x03 \x02(\x05\"I\n\x0fSymbolRuleProto\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x16\n\x0e\x61pply_for_type\x18\x02 \x01(\x05\x12\x10\n\x08priority\x18\x03 \x02(\x05\"j\n\x0f\x43\x61ptionDefProto\x12\x0e\n\x06height\x18\x01 \x02(\x05\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x14\n\x0cstroke_color\x18\x03 \x01(\r\x12\x10\n\x08offset_x\x18\x04 \x01(\x05\x12\x10\n\x08offset_y\x18\x05 \x01(\x05\"l\n\x10\x43\x61ptionRuleProto\x12!\n\x07primary\x18\x01 \x02(\x0b\x32\x10.CaptionDefProto\x12#\n\tsecondary\x18\x02 \x01(\x0b\x32\x10.CaptionDefProto\x12\x10\n\x08priority\x18\x03 \x02(\x05\"a\n\x0f\x43ircleRuleProto\x12\x0e\n\x06radius\x18\x01 \x02(\x01\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x1d\n\x06\x62order\x18\x03 \x01(\x0b\x32\r.LineDefProto\x12\x10\n\x08priority\x18\x04 \x02(\x05\"m\n\x11PathTextRuleProto\x12!\n\x07primary\x18\x01 \x02(\x0b\x32\x10.CaptionDefProto\x12#\n\tsecondary\x18\x02 \x01(\x0b\x32\x10.CaptionDefProto\x12\x10\n\x08priority\x18\x03 \x02(\x05\"X\n\x0fShieldRuleProto\x12\x0e\n\x06height\x18\x01 \x02(\x05\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x14\n\x0cstroke_color\x18\x03 \x01(\r\x12\x10\n\x08priority\x18\x04 \x02(\x05\"\xa1\x02\n\x10\x44rawElementProto\x12\r\n\x05scale\x18\x01 \x02(\x05\x12\x1d\n\x05lines\x18\x02 \x03(\x0b\x32\x0e.LineRuleProto\x12\x1c\n\x04\x61rea\x18\x03 \x01(\x0b\x32\x0e.AreaRuleProto\x12 \n\x06symbol\x18\x04 \x01(\x0b\x32\x10.SymbolRuleProto\x12\"\n\x07\x63\x61ption\x18\x05 \x01(\x0b\x32\x11.CaptionRuleProto\x12 \n\x06\x63ircle\x18\x06 \x01(\x0b\x32\x10.CircleRuleProto\x12%\n\tpath_text\x18\x07 \x01(\x0b\x32\x12.PathTextRuleProto\x12 \n\x06shield\x18\x08 \x01(\x0b\x32\x10.ShieldRuleProto\x12\x10\n\x08\x61pply_if\x18\t \x03(\t\"G\n\x13\x43lassifElementProto\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\"\n\x07\x65lement\x18\x02 \x03(\x0b\x32\x11.DrawElementProto\"4\n\x0e\x43ontainerProto\x12\"\n\x04\x63ont\x18\x01 \x03(\x0b\x32\x14.ClassifElementProto*4\n\x08LineJoin\x12\r\n\tROUNDJOIN\x10\x00\x12\r\n\tBEVELJOIN\x10\x01\x12\n\n\x06NOJOIN\x10\x02*3\n\x07LineCap\x12\x0c\n\x08ROUNDCAP\x10\x00\x12\x0b\n\x07\x42UTTCAP\x10\x01\x12\r\n\tSQUARECAP\x10\x02\x42\x02H\x03') + serialized_pb=_b('\n\x13\x64rules_struct.proto\"*\n\x0c\x44\x61shDotProto\x12\n\n\x02\x64\x64\x18\x01 \x03(\x01\x12\x0e\n\x06offset\x18\x02 \x01(\x01\":\n\x0cPathSymProto\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x0c\n\x04step\x18\x02 \x02(\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x01\"\xaf\x01\n\rLineRuleProto\x12\r\n\x05width\x18\x01 \x02(\x01\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x1e\n\x07\x64\x61shdot\x18\x03 \x01(\x0b\x32\r.DashDotProto\x12\x10\n\x08priority\x18\x04 \x02(\x05\x12\x1e\n\x07pathsym\x18\x05 \x01(\x0b\x32\r.PathSymProto\x12\x17\n\x04join\x18\x06 \x01(\x0e\x32\t.LineJoin\x12\x15\n\x03\x63\x61p\x18\x07 \x01(\x0e\x32\x08.LineCap\"\x9c\x01\n\x0cLineDefProto\x12\r\n\x05width\x18\x01 \x02(\x01\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x1e\n\x07\x64\x61shdot\x18\x03 \x01(\x0b\x32\r.DashDotProto\x12\x1e\n\x07pathsym\x18\x04 \x01(\x0b\x32\r.PathSymProto\x12\x17\n\x04join\x18\x06 \x01(\x0e\x32\t.LineJoin\x12\x15\n\x03\x63\x61p\x18\x07 \x01(\x0e\x32\x08.LineCap\"O\n\rAreaRuleProto\x12\r\n\x05\x63olor\x18\x01 \x02(\r\x12\x1d\n\x06\x62order\x18\x02 \x01(\x0b\x32\r.LineDefProto\x12\x10\n\x08priority\x18\x03 \x02(\x05\"I\n\x0fSymbolRuleProto\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x16\n\x0e\x61pply_for_type\x18\x02 \x01(\x05\x12\x10\n\x08priority\x18\x03 \x02(\x05\"x\n\x0f\x43\x61ptionDefProto\x12\x0e\n\x06height\x18\x01 \x02(\x05\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x14\n\x0cstroke_color\x18\x03 \x01(\r\x12\x10\n\x08offset_x\x18\x04 \x01(\x05\x12\x10\n\x08offset_y\x18\x05 \x01(\x05\x12\x0c\n\x04text\x18\x06 \x01(\t\"l\n\x10\x43\x61ptionRuleProto\x12!\n\x07primary\x18\x01 \x02(\x0b\x32\x10.CaptionDefProto\x12#\n\tsecondary\x18\x02 \x01(\x0b\x32\x10.CaptionDefProto\x12\x10\n\x08priority\x18\x03 \x02(\x05\"a\n\x0f\x43ircleRuleProto\x12\x0e\n\x06radius\x18\x01 \x02(\x01\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x1d\n\x06\x62order\x18\x03 \x01(\x0b\x32\r.LineDefProto\x12\x10\n\x08priority\x18\x04 \x02(\x05\"m\n\x11PathTextRuleProto\x12!\n\x07primary\x18\x01 \x02(\x0b\x32\x10.CaptionDefProto\x12#\n\tsecondary\x18\x02 \x01(\x0b\x32\x10.CaptionDefProto\x12\x10\n\x08priority\x18\x03 \x02(\x05\"X\n\x0fShieldRuleProto\x12\x0e\n\x06height\x18\x01 \x02(\x05\x12\r\n\x05\x63olor\x18\x02 \x02(\r\x12\x14\n\x0cstroke_color\x18\x03 \x01(\r\x12\x10\n\x08priority\x18\x04 \x02(\x05\"\xa1\x02\n\x10\x44rawElementProto\x12\r\n\x05scale\x18\x01 \x02(\x05\x12\x1d\n\x05lines\x18\x02 \x03(\x0b\x32\x0e.LineRuleProto\x12\x1c\n\x04\x61rea\x18\x03 \x01(\x0b\x32\x0e.AreaRuleProto\x12 \n\x06symbol\x18\x04 \x01(\x0b\x32\x10.SymbolRuleProto\x12\"\n\x07\x63\x61ption\x18\x05 \x01(\x0b\x32\x11.CaptionRuleProto\x12 \n\x06\x63ircle\x18\x06 \x01(\x0b\x32\x10.CircleRuleProto\x12%\n\tpath_text\x18\x07 \x01(\x0b\x32\x12.PathTextRuleProto\x12 \n\x06shield\x18\x08 \x01(\x0b\x32\x10.ShieldRuleProto\x12\x10\n\x08\x61pply_if\x18\t \x03(\t\"G\n\x13\x43lassifElementProto\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\"\n\x07\x65lement\x18\x02 \x03(\x0b\x32\x11.DrawElementProto\"4\n\x0e\x43ontainerProto\x12\"\n\x04\x63ont\x18\x01 \x03(\x0b\x32\x14.ClassifElementProto*4\n\x08LineJoin\x12\r\n\tROUNDJOIN\x10\x00\x12\r\n\tBEVELJOIN\x10\x01\x12\n\n\x06NOJOIN\x10\x02*3\n\x07LineCap\x12\x0c\n\x08ROUNDCAP\x10\x00\x12\x0b\n\x07\x42UTTCAP\x10\x01\x12\r\n\tSQUARECAP\x10\x02\x42\x02H\x03') ) _sym_db.RegisterFileDescriptor(DESCRIPTOR) @@ -44,8 +44,8 @@ _LINEJOIN = _descriptor.EnumDescriptor( ], containing_type=None, options=None, - serialized_start=1557, - serialized_end=1609, + serialized_start=1571, + serialized_end=1623, ) _sym_db.RegisterEnumDescriptor(_LINEJOIN) @@ -71,8 +71,8 @@ _LINECAP = _descriptor.EnumDescriptor( ], containing_type=None, options=None, - serialized_start=1611, - serialized_end=1662, + serialized_start=1625, + serialized_end=1676, ) _sym_db.RegisterEnumDescriptor(_LINECAP) @@ -434,6 +434,13 @@ _CAPTIONDEFPROTO = _descriptor.Descriptor( message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), + _descriptor.FieldDescriptor( + name='text', full_name='CaptionDefProto.text', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), ], extensions=[ ], @@ -446,7 +453,7 @@ _CAPTIONDEFPROTO = _descriptor.Descriptor( oneofs=[ ], serialized_start=620, - serialized_end=726, + serialized_end=740, ) @@ -489,8 +496,8 @@ _CAPTIONRULEPROTO = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=728, - serialized_end=836, + serialized_start=742, + serialized_end=850, ) @@ -540,8 +547,8 @@ _CIRCLERULEPROTO = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=838, - serialized_end=935, + serialized_start=852, + serialized_end=949, ) @@ -584,8 +591,8 @@ _PATHTEXTRULEPROTO = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=937, - serialized_end=1046, + serialized_start=951, + serialized_end=1060, ) @@ -635,8 +642,8 @@ _SHIELDRULEPROTO = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=1048, - serialized_end=1136, + serialized_start=1062, + serialized_end=1150, ) @@ -721,8 +728,8 @@ _DRAWELEMENTPROTO = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=1139, - serialized_end=1428, + serialized_start=1153, + serialized_end=1442, ) @@ -758,8 +765,8 @@ _CLASSIFELEMENTPROTO = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=1430, - serialized_end=1501, + serialized_start=1444, + serialized_end=1515, ) @@ -788,8 +795,8 @@ _CONTAINERPROTO = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=1503, - serialized_end=1555, + serialized_start=1517, + serialized_end=1569, ) _LINERULEPROTO.fields_by_name['dashdot'].message_type = _DASHDOTPROTO