/// <summary> /// Create the LanguageTag instance /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> public LanguageTag(Language lang, Region?region, IEnumerable <Variant> variants) : this() { Language = lang; Region = region; Variants = VariantCollection.Create(Language, Script, variants); }
/// <summary> /// Объекдинение полилиний. /// Полилинии должны быть замкнуты! /// </summary> /// <param name="pls">Поли</param> /// <param name="over">Контур который должен быть "над" объединенными полилиниями. Т.е. контур этой полилинии вырезается из полученного контура, если попадает на него.</param> public static Region?Union(this IEnumerable <Polyline>?pls, Region over) { if (pls?.Any() != true) { return(null); } var regions = CreateRegion(pls !); Region?union = null; try { union = UnionRegions(regions); } finally { if (union != null) { regions.Remove(union); } foreach (var item in regions) { item.Dispose(); } } // Вырезание over региона if (over != null) { union?.BooleanOperation(BooleanOperationType.BoolSubtract, over); } return(union); }
/// <summary> /// Create the LanguageTag instance /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Region?region, PrivateUseSubtags privateUseSubtags) : this() { Language = lang; Region = region; PrivateUse = privateUseSubtags; }
/// <summary> /// Create the LanguageTag instance /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="extSubtags">enumarate of extensions subtags</param> public LanguageTag(Language lang, Region?region, IEnumerable <ExtensionSubtag> extSubtags) : this() { Language = lang; Region = region; Extensions = new ExtensionSubtagCollection(extSubtags); }
/// <summary> /// Initializes a new instance of the ResponseIndexStatus class. /// </summary> /// <param name="region">Possible values include: 'Unknown', /// 'EastAsia', 'EastUS2', 'NorthCentralUS', 'NorthEurope', 'WestUS2', /// 'SoutheastAsia', 'AustraliaEast', 'AustraliaSoutheast', /// 'AustraliaCentral', 'AustraliaCentral2', 'BrazilSouth', /// 'CanadaCentral', 'CanadaEast', 'ChinaNorth', 'ChinaEast', /// 'ChinaNorth2', 'ChinaEast2', 'WestEurope', 'FranceCentral', /// 'FranceSouth', 'GermanyCentral', 'GermanyNortheast', /// 'CentralIndia', 'WestIndia', 'SouthIndia', 'JapanEast', /// 'JapanWest', 'KoreaCentral', 'KoreaSouth', 'EastUS', 'WestUS', /// 'CentralUS', 'SouthCentralUS', 'WestCentralUS', 'SouthAfricaNorth', /// 'SouthAfricaWest', 'UKWest', 'UKSouth', 'UAENorth', /// 'UAECentral'</param> /// <param name="provisioningState">The provisioning state for the /// index within the specified region. Possible values include: /// 'Unknown', 'NotStarted', 'Provisioning', 'Deprovisioning', /// 'Succeeded', 'Failed'</param> /// <param name="provisioningPercentage">The percentage of provisioning /// for the index withing the region.</param> public ResponseIndexStatus(Region?region = default(Region?), string provisioningState = default(string), double?provisioningPercentage = default(double?)) { Region = region; ProvisioningState = provisioningState; ProvisioningPercentage = provisioningPercentage; CustomInit(); }
/// <summary> /// Create the LanguageTag instance /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> public LanguageTag(Language lang, Script?script, Region?region) : this() { Language = lang; Script = script; Region = region; }
/// <summary> /// Gets the <see cref="Gdi32.HDC"/> from the the given <paramref name="deviceContext"/>. /// </summary> /// <remarks> /// When a <see cref="Graphics"/> object is created from a <see cref="Gdi32.HDC"/> the clipping region and /// the viewport origin are applied (<see cref="Gdi32.GetViewportExtEx(Gdi32.HDC, out Size)"/>). The clipping /// region isn't reflected in <see cref="Graphics.Clip"/>, which is combined with the HDC HRegion. /// /// The Graphics object saves and restores DC state when performing operations that would modify the DC to /// maintain the DC in its original or returned state after <see cref="Graphics.ReleaseHdc()"/>. /// </remarks> /// <param name="applyGraphicsState"> /// Applies the origin transform and clipping region of the <paramref name="deviceContext"/> if it is an /// object of type <see cref="Graphics"/>. Otherwise this is a no-op. /// </param> /// <param name="saveHdcState"> /// When true, saves and restores the <see cref="Gdi32.HDC"/> state. /// </param> public DeviceContextHdcScope( IDeviceContext deviceContext, bool applyGraphicsState = true, bool saveHdcState = false) { DeviceContext = deviceContext ?? throw new ArgumentNullException(nameof(deviceContext)); ApplyGraphicsProperties apply = applyGraphicsState ? ApplyGraphicsProperties.All : ApplyGraphicsProperties.None; _savedHdcState = 0; if (apply == ApplyGraphicsProperties.None || !(DeviceContext is Graphics graphics)) { // GetHdc() locks the Graphics object, it cannot be used until ReleaseHdc() is called HDC = (Gdi32.HDC)DeviceContext.GetHdc(); _savedHdcState = saveHdcState ? Gdi32.SaveDC(HDC) : 0; return; } bool applyTransform = apply.HasFlag(ApplyGraphicsProperties.TranslateTransform); bool applyClipping = apply.HasFlag(ApplyGraphicsProperties.Clipping); // This API is very expensive object[]? data = applyTransform || applyClipping ? (object[])graphics.GetContextInfo() : null; using Region? clipRegion = (Region?)data?[0]; using Matrix? worldTransform = (Matrix?)data?[1]; // elements (XFORM) = [eM11, eM12, eM21, eM22, eDx, eDy], eDx/eDy specify the translation offset. float[]? elements = applyTransform ? worldTransform?.Elements : null; int dx = elements != null ? (int)elements[4] : 0; int dy = elements != null ? (int)elements[5] : 0; applyTransform = applyTransform && elements != null && (dx != 0 || dy != 0); using var graphicsRegion = applyClipping ? new Gdi32.RegionScope(clipRegion !, graphics) : default;
public Region GetNearestRegion(float x, float z) { Vector2 worldPosition = new Vector2(x, z); Vector2Int regionId = Vector2Int.FloorToInt(worldPosition / REGION_SIZE); Region? nearestRegion = null; float nearestDistance = float.MaxValue; for (int dx = -1; dx <= 1; dx++) { for (int dz = -1; dz <= 1; dz++) { Region region = GetOrGenerateRegion(regionId + new Vector2Int(dx, dz)); if (nearestRegion == null) { nearestRegion = region; nearestDistance = Vector2.Distance(region.VoronoiWorldPoint, worldPosition); continue; } float distance = Vector2.Distance(region.VoronoiWorldPoint, worldPosition); if (nearestDistance > distance) { nearestDistance = distance; nearestRegion = region; } } } return((Region)nearestRegion); }
/// <summary> /// Create the LanguageTag instance /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Script?script, Region?region, PrivateUseSubtags privateUseSubtags) : this() { Language = lang; Script = script; Region = region; PrivateUse = privateUseSubtags; }
/// <summary> /// Create the LanguageTag instance /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Region?region, IEnumerable <Variant> variants, PrivateUseSubtags privateUseSubtags) : this() { Language = lang; Region = region; Variants = VariantCollection.Create(Language, Script, variants); PrivateUse = privateUseSubtags; }
public bool Equals(Region?r1, Region?r2) { return((r1, r2) switch { (null, null) => true, (null, _) => false, (_, null) => false, (Region x, Region y) => Enumerable.SequenceEqual(x.Points, y.Points, new PointEqualityComparer()) });
/// <summary> /// Create the LanguageTag instance /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> /// <param name="extSubtags">enumarate of extensions subtags</param> public LanguageTag(Language lang, Region?region, IEnumerable <Variant> variants, IEnumerable <ExtensionSubtag> extSubtags) : this() { Language = lang; Region = region; Variants = VariantCollection.Create(Language, Script, variants); Extensions = new ExtensionSubtagCollection(extSubtags); }
public static WindowsGraphics FromGraphics(Graphics g, ApplyGraphicsProperties properties) { Debug.Assert(g != null, "null Graphics object."); WindowsRegion?wr = null; PointF offset = default; if (properties != ApplyGraphicsProperties.None) { Region?clip = null; if (properties.HasFlag(ApplyGraphicsProperties.Clipping)) { g.GetContextInfo(out offset, out clip); } else { g.GetContextInfo(out offset); } if (clip is not null) { // We have to create the WindowsRegion and dipose the Region object before locking the Graphics object, // in case of an unlikely exception before releasing the WindowsRegion, the finalizer will do it for us. // (no try-finally block since this method is used frequently - perf). // If clipping has not been set (Region.IsInfinite) GetContextInfo will return a null Region. wr = WindowsRegion.FromRegion(clip, g); // WindowsRegion will take ownership of the hRegion. clip.Dispose(); // Disposing the Region object doesn't destroy the hRegion. } } WindowsGraphics wg = FromHdc(g.GetHdc()); // This locks the Graphics object. wg._graphics = g; // Apply transform and clip if (wr is not null) { using (wr) { // If the Graphics object was created from a native DC the actual clipping region is the intersection // beteween the original DC clip region and the GDI+ one - for display Graphics it is the same as // Graphics.VisibleClipBounds. wg.DeviceContext.IntersectClip(wr); } } if (offset != default) { // elements (XFORM) = [eM11, eM12, eM21, eM22, eDx, eDy], eDx/eDy specify the translation offset. wg.DeviceContext.TranslateTransform((int)offset.X, (int)offset.Y); } return(wg); }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> private LanguageTag( Language?language, Script?script, Region?region, VariantCollection variants, ExtensionSubtagCollection extensions, ExtensionSubtag privateUse) { if (language != null && script != null) { var suppressScript = language.SuppressScript; if (suppressScript != null && suppressScript == script) { script = null; } } Language = language; Script = script; Region = region; Variants = variants; Extensions = extensions; PrivateUse = privateUse; var fields = Field.None; if (language != null) { fields |= Field.Language; } if (script != null) { fields |= Field.Script; } if (region != null) { fields |= Field.Region; } if (!variants.IsEmpty) { fields |= Field.Variants; } if (!extensions.IsEmpty) { fields |= Field.Extensions; } if (!privateUse.IsEmpty) { if (!privateUse.PrivateUse) { throw new ArgumentOutOfRangeException(nameof(privateUse), "must be a private use subtag"); } fields |= Field.PrivateUse; } Fields = fields; }
/// <summary> /// Create the LanguageTag instance /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="extSubtags">enumarate of extensions subtags</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Script?script, Region?region, IEnumerable <ExtensionSubtag> extSubtags, PrivateUseSubtags privateUseSubtags) : this() { Language = lang; Script = script; Region = region; Extensions = new ExtensionSubtagCollection(extSubtags); PrivateUse = privateUseSubtags; }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> /// <param name="extSubtags">enumarate of extensions subtags</param> public LanguageTag(Language lang, Script?script, Region?region, IEnumerable <Variant>?variants, IEnumerable <ExtensionSubtag>?extSubtags) : this( lang, script, region, VariantCollection.Create(lang, script, variants), new ExtensionSubtagCollection(extSubtags), default) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> public LanguageTag(Language lang, Script?script, Region?region, IEnumerable <Variant>?variants) : this( lang, script, region, VariantCollection.Create(lang, script, variants), default, default) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> public LanguageTag(Language lang, Region?region) : this( (Language?)lang, null, region, default, default, default) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Script?script, Region?region, ExtensionSubtag privateUseSubtags) : this( lang, script, region, default, default, privateUseSubtags) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> /// <param name="extSubtags">enumarate of extensions subtags</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Script?script, Region?region, IEnumerable <Variant> variants, IEnumerable <ExtensionSubtag> extSubtags, PrivateUseSubtags privateUseSubtags) : this( (Language?)lang, script, region, VariantCollection.Create(lang, script, variants), new ExtensionSubtagCollection(extSubtags), privateUseSubtags) { }
/// <summary> /// Release any resources held by this Object. /// </summary> public void Dispose() { if (_region is not null) { _region.Dispose(); _region = null; } _icon.Dispose(); }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="extSubtags">enumarate of extensions subtags</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Script?script, Region?region, IEnumerable <ExtensionSubtag> extSubtags, PrivateUseSubtags privateUseSubtags) : this( (Language?)lang, script, region, default, new ExtensionSubtagCollection(extSubtags), privateUseSubtags) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Script?script, Region?region, IEnumerable <Variant> variants, PrivateUseSubtags privateUseSubtags) : this( (Language?)lang, script, region, VariantCollection.Create(lang, script, variants), default, privateUseSubtags) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> public LanguageTag(Language lang, Script?script, Region?region) : this( (Language?)lang, script, region, default, default, default) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Script?script, Region?region, PrivateUseSubtags privateUseSubtags) : this( (Language?)lang, script, region, default, default, privateUseSubtags) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> public LanguageTag(Language lang, Region?region, IEnumerable <Variant> variants) : this( (Language?)lang, null, region, VariantCollection.Create(lang, null, variants), default, default) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="variants">enumarate of variant subtags</param> /// <param name="extSubtags">enumarate of extensions subtags</param> public LanguageTag(Language lang, Region?region, IEnumerable <Variant> variants, IEnumerable <ExtensionSubtag> extSubtags) : this( (Language?)lang, null, region, VariantCollection.Create(lang, null, variants), new ExtensionSubtagCollection(extSubtags), default) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="extSubtags">enumarate of extensions subtags</param> public LanguageTag(Language lang, Region?region, IEnumerable <ExtensionSubtag> extSubtags) : this( (Language?)lang, null, region, default, new ExtensionSubtagCollection(extSubtags), default) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="region">region subtag</param> /// <param name="privateUseSubtags">private use subtag</param> public LanguageTag(Language lang, Region?region, PrivateUseSubtags privateUseSubtags) : this( (Language?)lang, null, region, default, default, privateUseSubtags) { }
/// <summary> /// Initializes new value of <see cref="LanguageTag"/> /// </summary> /// <param name="lang">primary language</param> /// <param name="script">script subtag</param> /// <param name="region">region subtag</param> /// <param name="extSubtags">enumarate of extensions subtags</param> public LanguageTag(Language lang, Script?script, Region?region, IEnumerable <ExtensionSubtag>?extSubtags) : this( lang, script, region, default, new ExtensionSubtagCollection(extSubtags), default) { }
public override void Deserialize(Dictionary<string,object> json) { Region = (Region?)JsonUtil.GetEnum<Region>(json, "Region"); BuildVersion = (string)JsonUtil.Get<string>(json, "BuildVersion"); IncludeState = (string)JsonUtil.Get<string>(json, "IncludeState"); }
public override void Deserialize(Dictionary<string,object> json) { BuildVersion = (string)JsonUtil.Get<string>(json, "BuildVersion"); Region = (Region?)JsonUtil.GetEnum<Region>(json, "Region"); GameMode = (string)JsonUtil.Get<string>(json, "GameMode"); LobbyId = (string)JsonUtil.Get<string>(json, "LobbyId"); EnableQueue = (bool?)JsonUtil.Get<bool?>(json, "EnableQueue"); }
public override void Deserialize(Dictionary<string,object> json) { Region = (Region?)JsonUtil.GetEnum<Region>(json, "Region"); Name = (string)JsonUtil.Get<string>(json, "Name"); Available = (bool)JsonUtil.Get<bool?>(json, "Available"); PingUrl = (string)JsonUtil.Get<string>(json, "PingUrl"); }