private LoadedFrameImage LoadImage(FrameImage image) { var res = _Project.FindResource(ProjectDirectoryUsage.Image, image.Resource.ResourceID); if (res != null) { AbstractImage imageData = LoadResource(res); if (imageData == null) { return(_EmptyImage); } var clipped = ClipBitmap(imageData, image); if (image.AlphaBlendMode) { AbstractImage.MakeAlphaBlendBitmap(clipped); } return(new LoadedFrameImage { Bitmap = clipped, UsePalette = imageData.UsePalette }); } return(_EmptyImage); }
private void FrameImage_MouseMove(object sender, MouseEventArgs e) { if (_draw) { _sprite.SpriteBase.X2 = (short)(e.X / _zoom); _sprite.SpriteBase.Y2 = (short)(e.Y / _zoom); WHLabel.Text = "W, H = (" + (_sprite.SpriteBase.Width + 1) + ", " + (_sprite.SpriteBase.Height + 1) + ")"; FrameImage.Refresh(); } }
private void FrameImage_MouseUp(object sender, MouseEventArgs e) { _draw = false; _sprite.SpriteBase.X2 = Math.Max((short)(_sprite.SpriteBase.X1 + 1), _sprite.SpriteBase.X2); _sprite.SpriteBase.Y2 = Math.Max((short)(_sprite.SpriteBase.Y1 + 1), _sprite.SpriteBase.Y2); if (Modified != null) { Modified(this, new EventArgs()); } FrameImage.Refresh(); }
public void Load(Stream stream) { FileInfo.KeepOpen = true; _stream = stream; Header = new THP_Parser(stream); foreach (var frame in Header.Frames) { var tex = new FrameImage(videoData.Frames.Count); tex.Frame = frame; videoData.Width = Header.Video.Width; videoData.Height = Header.Video.Height; videoData.Frames.Add(tex); } }
public void UpdateCenterFrame() { if (_sprite != null) { _zoom = BasePanel.Width / _sprite.SpriteWidth; _zoom = Math.Min(BasePanel.Height / _sprite.SpriteHeight, _zoom); FrameImage.Width = _sprite.SpriteWidth * _zoom; FrameImage.Height = _sprite.SpriteHeight * _zoom; } int x = (BasePanel.Width >> 1) - (FrameImage.Width >> 1); int y = (BasePanel.Height >> 1) - (FrameImage.Height >> 1); FrameImage.Location = new Point(x, y); FrameImage.Refresh(); }
// min, max, ave を返す public async UnaryResult <(int, int, double)> SendImage(FrameImage image) { Logger.Debug($"[FrameImage] (w, h) = ({image.Width}, {image.Height})"); int max = int.MinValue; int min = int.MaxValue; long sum = 0; Parallel.ForEach(image.Bytes, (b) => { sum += b; if (max < b) { max = b; } if (b < min) { min = b; } }); return(min, max, (double)sum / (image.Width * image.Height)); }
public static List <Sprite> GenerateAtlas(ImportContext ctx, List <Layer> layers, string atlasPath) { var file = ctx.file; var settings = ctx.settings; var path = atlasPath; var images = file.frames .Select(frame => { var cels = frame.cels.Values.OrderBy(it => it.layerIndex).ToList(); var image = new FrameImage(file.width, file.height); foreach (var cel in cels) { var layer = file.FindLayer(cel.layerIndex); if (!layers.Contains(layer)) { continue; } for (int cy = 0; cy < cel.height; ++cy) { for (int cx = 0; cx < cel.width; ++cx) { var c = cel.GetPixelRaw(cx, cy); if (c.a != 0f) { var x = cx + cel.x; var y = cy + cel.y; var lastColor = image.GetPixel(x, y); // blending var color = Color.Lerp(lastColor, c, c.a); color.a = lastColor.a + c.a * (1 - lastColor.a); color.r /= color.a; color.g /= color.a; color.b /= color.a; image.SetPixel(x, y, color); // expand image area image.minx = Mathf.Min(image.minx, x); image.miny = Mathf.Min(image.miny, y); image.maxx = Mathf.Max(image.maxx, x); image.maxy = Mathf.Max(image.maxy, y); } } } } if (image.minx == int.MaxValue) { image.minx = image.maxx = image.miny = image.maxy = 0; } return(image); }) .ToList(); var packList = images.Select(image => new PackData { width = image.finalWidth, height = image.finalHeight }).ToList(); var packResult = PackAtlas(packList); if (packResult.imageSize > 2048) { Debug.LogWarning("Generate atlas size is larger than 2048, this might force Unity to compress the image."); } var texture = new Texture2D(packResult.imageSize, packResult.imageSize); var transparent = new Color(0, 0, 0, 0); for (int y = 0; y < texture.height; ++y) { for (int x = 0; x < texture.width; ++x) { texture.SetPixel(x, y, transparent); } } Vector2 oldPivotNorm = settings.PivotRelativePos; var metaList = new List <SpriteMetaData>(); for (int i = 0; i < images.Count; ++i) { var pos = packResult.positions[i]; var image = images[i]; for (int y = image.miny; y <= image.maxy; ++y) { for (int x = image.minx; x <= image.maxx; ++x) { int texX = (x - image.minx) + pos.x; int texY = -(y - image.miny) + pos.y + image.finalHeight - 1; texture.SetPixel(texX, texY, image.GetPixel(x, y)); } } var metadata = new SpriteMetaData(); metadata.name = ctx.fileNameNoExt + "_" + i; metadata.alignment = (int)SpriteAlignment.Custom; metadata.rect = new Rect(pos.x, pos.y, image.finalWidth, image.finalHeight); // calculate relative pivot var oldPivotTex = Vector2.Scale(oldPivotNorm, new Vector2(file.width, file.height)); var newPivotTex = oldPivotTex - new Vector2(image.minx, file.height - image.maxy - 1); var newPivotNorm = Vector2.Scale(newPivotTex, new Vector2(1.0f / image.finalWidth, 1.0f / image.finalHeight)); metadata.pivot = newPivotNorm; ctx.spriteCropPositions.Add(new Vector2(image.minx, file.height - image.maxy - 1)); metaList.Add(metadata); } var bytes = texture.EncodeToPNG(); File.WriteAllBytes(path, bytes); // Import texture AssetDatabase.Refresh(); var importer = AssetImporter.GetAtPath(path) as TextureImporter; importer.textureType = TextureImporterType.Sprite; importer.spritePixelsPerUnit = settings.ppu; importer.mipmapEnabled = false; importer.filterMode = FilterMode.Point; importer.textureCompression = TextureImporterCompression.Uncompressed; importer.spritesheet = metaList.ToArray(); importer.spriteImportMode = SpriteImportMode.Multiple; importer.maxTextureSize = 4096; EditorUtility.SetDirty(importer); importer.SaveAndReimport(); return(GetAtlasSprites(path)); }
public void ResetImage(FrameImage img) { cachedImage.Remove(img.ImageID); cachedUnclipped.Remove(img.ImageID); }
private Bitmap ClipBitmap(AbstractImage res, FrameImage img) { return(res.ToBitmap(_Palette, new Rectangle(img.X, img.Y, img.W, img.H))); }
public static List <Sprite> GenerateAtlas(ImportContext ctx, List <Layer> layers, bool densePacked = true, int border = 8) { var file = ctx.file; var images = file.frames .Select(frame => { var cels = frame.cels.Values.OrderBy(it => it.layerIndex).ToList(); var image = new FrameImage(file.width, file.height); foreach (var cel in cels) { var layer = file.FindLayer(cel.layerIndex); if (!layers.Contains(layer)) { continue; } for (int cy = 0; cy < cel.height; ++cy) { for (int cx = 0; cx < cel.width; ++cx) { var c = cel.GetPixelRaw(cx, cy); var cAlpha = BlendeModeAnalysis.DocColor.rgba_geta(c); if (cAlpha != 0f) { var x = cx + cel.x; var y = cy + cel.y; if (0 <= x && x < file.width && 0 <= y && y < file.height) // Aseprite allows some pixels out of bounds to be kept, ignore them { var lastColor = image.GetPixel(x, y); // blending //var color = FunctionBoost.Color_Lerp(lastColor, c, c.Af); //color.Af = lastColor.Af + c.Af * (1 - lastColor.Af); //color.Rf /= color.Af; //color.Gf /= color.Af; //color.Bf /= color.Af; var color = BlendeModeAnalysis.GetBlendFunc(layer.blendMode)( lastColor, c, cAlpha); image.SetPixel(x, y, color); // expand image area image.minx = Mathf.Min(image.minx, x); image.miny = Mathf.Min(image.miny, y); image.maxx = Mathf.Max(image.maxx, x); image.maxy = Mathf.Max(image.maxy, y); } } } } } if (image.minx == int.MaxValue) { image.minx = image.maxx = image.miny = image.maxy = 0; } if (!densePacked) // override image border for sparsely packed atlas { image.minx = image.miny = 0; image.maxx = file.width - 1; image.maxy = file.height - 1; } return(image); }) .ToList(); var packList = images.Select(image => new PackData { width = image.finalWidth, height = image.finalHeight }).ToList(); var packResult = PackAtlas(packList, border); if (packResult.imageSize > 2048) { Log.Warnning("Generate atlas size is larger than 2048 !"); } var textureData = new Color[packResult.imageSize * packResult.imageSize]; // build image for (int i = 0; i < images.Count; ++i) { var pos = packResult.positions[i]; var image = images[i]; for (int y = image.miny; y <= image.maxy; ++y) { for (int x = image.minx; x <= image.maxx; ++x) { //int texX = (x - image.minx) + pos.x; //int texY = -(y - image.miny) + pos.y + image.finalHeight - 1; //textureData[texX + texY * packResult.imageSize] = image.GetPixel(x, y); int texX = (x - image.minx) + pos.x; int texY = (y - image.miny) + pos.y; textureData[texX + texY * packResult.imageSize] = BlendeModeAnalysis.ConvertTo(image.GetPixel(x, y)); } } } var texture = Image.NewImageData(packResult.imageSize, packResult.imageSize); texture.SetPixels(textureData); var textureImage = Graphics.NewImage(texture); textureImage.SetFilter(FilterMode.Nearest, FilterMode.Nearest); // build image end Vector2 oldPivotNorm = Vector2.Zero; var metaList = new List <Sprite>(images.Count); for (int i = 0; i < images.Count; ++i) { var pos = packResult.positions[i]; var image = images[i]; float duration = file.frames[i].duration; var metadata = new Sprite(); metadata.frame = file.frames[i]; metadata.image = textureImage; metadata.duration = duration * 0.001f; metadata.name = ctx.fileNameNoExt + "_" + i; metadata.alignment = SpriteAlignment.Custom; metadata.rect = new RectangleF(pos.x, pos.y, image.finalWidth, image.finalHeight); metadata.quad = Graphics.NewQuad(pos.x, pos.y, image.finalWidth, image.finalHeight, packResult.imageSize, packResult.imageSize); // calculate relative pivot metadata.imgQuadOffset = new Vector2(image.minx, image.miny); //ctx.spriteCropPositions.Add(new Vector2(image.minx, file.height - image.maxy - 1)); metaList.Add(metadata); } return(metaList); }
static async Task MainAsync() { //--- API が公開されている IP / Port / 認証情報を設定して通信路を生成 var channel = new Channel("localhost", 12345, ChannelCredentials.Insecure, new[] { new ChannelOption(ChannelOptions.MaxReceiveMessageLength, int.MaxValue), new ChannelOption(ChannelOptions.MaxSendMessageLength, int.MaxValue), }); //--- 指定されたサービス定義用のクライアントを作成 var client = MagicOnionClient.Create <ISampleApi>(channel); var imageClient = MagicOnionClient.Create <IImageService>(channel); for (int i = 0; i < 1; i++) { // ■UnaryStreaming //--- RPC 形式で超お手軽呼び出し var result = await client.Sum(1, 2); Console.WriteLine($"[Unary] Result : {result}"); // ■サーバーからの Streaming //--- サーバーが WriteAsync すると ForEachAsync が動く //--- サーバーから完了信号が送られると ForEachAsync が終了する var streaming = await client.Repeat(4, 5); await streaming.ResponseStream.ForEachAsync(x => { Console.WriteLine($"[Streaming] Result : {x}"); }); // ■Clientからの Streaming var clientStreaming = await client.SplitUpload(); foreach (var x in Enumerable.Range(1, 4)) { await clientStreaming.RequestStream.WriteAsync(x); } // -- 完了通知 await clientStreaming.RequestStream.CompleteAsync(); // --- サーバーからの結果を取得 var response = await clientStreaming.ResponseAsync; Console.WriteLine($"[ClientStreaming] Result : {response}"); // ■双方向の Streaming // サーバー側からのメッセージを受信 var duplexStreaming = await client.DuplexSample(); var task = duplexStreaming.ResponseStream.ForEachAsync(x => { Console.WriteLine($"[DuplexStreaming] Received: {x}"); }); // クライアント側からサーバー側にメッセージを送信 foreach (var x in Enumerable.Range(0, 5)) { await duplexStreaming.RequestStream.WriteAsync(x); } // メッセージ送信完了を通知 await duplexStreaming.RequestStream.CompleteAsync(); await task; // ■独自型の送信 var point = new Vector2(3, 5); var resVec = await client.Sample(point); // Nilが返ってくる Console.WriteLine($"独自型送信結果1: {resVec.GetType().FullName}"); // ■ステータスコードの取得 var call = client.Sample(new Vector2(1, 2)); var header = await call.ResponseHeadersAsync; var status = call.GetStatus(); // ResponseHeadersAsyncしないとGetStatus()を呼び出せない if (status.StatusCode == StatusCode.OK) { // OKだったら結果を受け取る var resVec2 = await call.ResponseAsync; Console.WriteLine($"独自型送信結果2: 正常: {resVec}"); } else { Console.WriteLine($"独自型送信結果2: エラー: {status}"); } try { // OK 以外のステータスコードが送られているレスポンスに対して値を読み出そうとすると RpcException が発生する resVec = await client.Sample(new Vector2(-1, 2)); Console.WriteLine($"独自型送信結果3: 正常: {resVec.GetType().FullName}"); } catch (Grpc.Core.RpcException ex) { Console.WriteLine(ex.Message); } // サーバー側で予期せぬエラーが発生したら… ⇒ StatusCode.Unknown が返される call = client.Sample(new Vector2(int.MinValue, 2)); header = await call.ResponseHeadersAsync; status = call.GetStatus(); if (status.StatusCode == StatusCode.OK) { // OKだったら結果を受け取る var resVec2 = await call.ResponseAsync; Console.WriteLine($"独自型送信結果4: 正常: {resVec}"); } else { // Status(StatusCode = Unknown, Detail = "Exception was thrown by handler.") Console.WriteLine($"独自型送信結果4: エラー: {status}"); } // ■ヘッダーにデータを詰め込む // ※string, byte[] を格納できる // ※byte[] を格納する場合はキー名に "-bin" を付けること var metadata = new Metadata() { new Metadata.Entry("Key", "Value"), new Metadata.Entry("Key-bin", new byte[] { 1, 2 }), }; //var clientWithMetadata = MagicOnionClient.Create<ISampleApi>(channel).WithHeaders(metadata); //var resWithMetadata = await clientWithMetadata.SampleWithMetadata(); // ↑でもいいけど、新しくclientを作らなくても大丈夫↓ var resWithMetadata = await client.WithHeaders(metadata).SampleWithMetadata(); Console.WriteLine($"メタデータ結果: 正常: {resWithMetadata.GetType().FullName}"); } // byte[]の送信 BitmapImage bi = LoadImageFile(@"resources/image.axd.jpg"); byte[] bytes = ExtractByteArray(bi); var frame = new FrameImage(bi.PixelWidth, bi.PixelHeight, bytes); var(min, max, ave) = await imageClient.SendImage(frame); Console.WriteLine($"Frame送信結果: bytes={bytes.Length}, Min={min}, Max={max}, Ave={ave}"); // 巨大なbyte[]の送信 try { bi = LoadImageFile(@"resources/jem_40mb.tif"); bytes = ExtractByteArray(bi); frame = new FrameImage(bi.PixelWidth, bi.PixelHeight, bytes); (min, max, ave) = await imageClient.SendImage(frame); Console.WriteLine($"Frame送信結果: bytes={bytes.Length}, Min={min}, Max={max}, Ave={ave}"); }catch (RpcException ex) { // デフォルトでは4MBを越えるとエラーになる Console.WriteLine(ex.Message); } // ■ユーザー固有IDの送信 // ★2020/08/05現在(MagicOnion3.0.13では) ChannelContext というクラスが存在しない!廃止された?! //--- ChannelContext でチャンネルとユーザー固有の ID をラップ //var connectionId = "なにかしらユーザー固有のID"; //var context = new ChannelContext(channel, () => connectionId); //await context.WaitConnectComplete(); // 接続待ち //var client = context.CreateClient<ISampleApi>(); //var result = await client.Sample(); // ★仕方ないので、自前でヘッダーに仕込んで送るようにする var meta = new Metadata() { new Metadata.Entry("ConnectionId_ja", "なにかのID文字列"), new Metadata.Entry("ConnectionId", "some id string"), }; var connectionIDClient = MagicOnionClient.Create <IConnectionIDService>(channel).WithHeaders(meta); var res = await connectionIDClient.SendConnectionID(); // ■ゲームサーバーへの接続 (部屋への登録/解除、サーバーからのpush通知受け取り) GamingHubClient gamingHub = new GamingHubClient(); string name = $"p{System.Diagnostics.Process.GetCurrentProcess().Id}"; var gameObject = await gamingHub.ConnectAsync(channel, "room1", name); Console.ReadLine(); await gamingHub.LeaveAsync(); Console.ReadLine(); }
public IPersistable CreateRIFObject(ObjectType objectType, ref IntermediateFormatReader context) { IPersistable persistable = null; if (objectType == ObjectType.Null) { return(null); } IDOwner parentIDOwner = this.m_parentIDOwner; ReportItem parentReportItem = this.m_parentReportItem; switch (objectType) { case ObjectType.PageSection: persistable = new PageSection(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.Line: persistable = new Line(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.Rectangle: persistable = new Rectangle(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.Image: persistable = new Image(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.TextBox: persistable = new TextBox(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.SubReport: persistable = new SubReport(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.Grouping: persistable = new Grouping(ConstructionPhase.Deserializing); break; case ObjectType.Sorting: persistable = new Sorting(ConstructionPhase.Deserializing); break; case ObjectType.ReportItemCollection: persistable = new ReportItemCollection(); break; case ObjectType.ReportItemIndexer: persistable = (IPersistable)(object)default(ReportItemIndexer); break; case ObjectType.Style: persistable = new Style(ConstructionPhase.Deserializing); break; case ObjectType.AttributeInfo: persistable = new AttributeInfo(); break; case ObjectType.Visibility: persistable = new Visibility(); break; case ObjectType.ExpressionInfo: persistable = new ExpressionInfo(); break; case ObjectType.ExpressionInfoTypeValuePair: persistable = new ExpressionInfoTypeValuePair(); break; case ObjectType.DataAggregateInfo: persistable = new DataAggregateInfo(); break; case ObjectType.RunningValueInfo: persistable = new RunningValueInfo(); break; case ObjectType.Filter: persistable = new Filter(); break; case ObjectType.DataSource: persistable = new DataSource(); break; case ObjectType.DataSet: persistable = new DataSet(); break; case ObjectType.ReportQuery: persistable = new ReportQuery(); break; case ObjectType.Field: persistable = new Field(); break; case ObjectType.ParameterValue: persistable = new ParameterValue(); break; case ObjectType.ReportSnapshot: persistable = new ReportSnapshot(); break; case ObjectType.DocumentMapNode: persistable = new DocumentMapNode(); break; case ObjectType.DocumentMapBeginContainer: persistable = DocumentMapBeginContainer.Instance; break; case ObjectType.DocumentMapEndContainer: persistable = DocumentMapEndContainer.Instance; break; case ObjectType.ReportInstance: persistable = new ReportInstance(); break; case ObjectType.ParameterInfo: persistable = new ParameterInfo(); break; case ObjectType.ValidValue: persistable = new ValidValue(); break; case ObjectType.ParameterDataSource: persistable = new ParameterDataSource(); break; case ObjectType.ParameterDef: persistable = new ParameterDef(); break; case ObjectType.ProcessingMessage: persistable = new ProcessingMessage(); break; case ObjectType.CodeClass: persistable = (IPersistable)(object)default(CodeClass); break; case ObjectType.Action: persistable = new Action(); break; case ObjectType.RenderingPagesRanges: persistable = (IPersistable)(object)default(RenderingPagesRanges); break; case ObjectType.IntermediateFormatVersion: persistable = new IntermediateFormatVersion(); break; case ObjectType.ImageInfo: persistable = new ImageInfo(); break; case ObjectType.ActionItem: persistable = new ActionItem(); break; case ObjectType.DataValue: persistable = new DataValue(); break; case ObjectType.CustomReportItem: persistable = new CustomReportItem(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.SortFilterEventInfoMap: persistable = new SortFilterEventInfoMap(); break; case ObjectType.SortFilterEventInfo: persistable = new SortFilterEventInfo(); break; case ObjectType.EndUserSort: persistable = new EndUserSort(); break; case ObjectType.ScopeLookupTable: persistable = new ScopeLookupTable(); break; case ObjectType.Tablix: persistable = new Tablix(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.TablixHeader: persistable = new TablixHeader(); break; case ObjectType.TablixMember: persistable = new TablixMember(); break; case ObjectType.TablixColumn: persistable = new TablixColumn(); break; case ObjectType.TablixRow: persistable = new TablixRow(); break; case ObjectType.TablixCornerCell: persistable = new TablixCornerCell(); break; case ObjectType.TablixCell: persistable = new TablixCell(); break; case ObjectType.Chart: persistable = new Chart(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.ChartMember: persistable = new ChartMember(); break; case ObjectType.ChartSeries: persistable = new ChartSeries(); break; case ObjectType.ChartDataPoint: persistable = new ChartDataPoint(); break; case ObjectType.ChartDataPointValues: persistable = new ChartDataPointValues(); break; case ObjectType.ChartArea: persistable = new ChartArea(); break; case ObjectType.ChartLegend: persistable = new ChartLegend(); break; case ObjectType.ChartLegendTitle: persistable = new ChartLegendTitle(); break; case ObjectType.ChartAxis: persistable = new ChartAxis(); break; case ObjectType.ThreeDProperties: persistable = new ChartThreeDProperties(); break; case ObjectType.ChartDataLabel: persistable = new ChartDataLabel(); break; case ObjectType.ChartMarker: persistable = new ChartMarker(); break; case ObjectType.ChartTitle: persistable = new ChartTitle(); break; case ObjectType.ChartAxisScaleBreak: persistable = new ChartAxisScaleBreak(); break; case ObjectType.ChartDerivedSeries: persistable = new ChartDerivedSeries(); break; case ObjectType.ChartBorderSkin: persistable = new ChartBorderSkin(); break; case ObjectType.ChartNoDataMessage: persistable = new ChartNoDataMessage(); break; case ObjectType.ChartItemInLegend: persistable = new ChartItemInLegend(); break; case ObjectType.ChartEmptyPoints: persistable = new ChartEmptyPoints(); break; case ObjectType.ChartNoMoveDirections: persistable = new ChartNoMoveDirections(); break; case ObjectType.ChartFormulaParameter: persistable = new ChartFormulaParameter(); break; case ObjectType.ChartLegendColumn: persistable = new ChartLegendColumn(); break; case ObjectType.ChartLegendColumnHeader: persistable = new ChartLegendColumnHeader(); break; case ObjectType.ChartLegendCustomItem: persistable = new ChartLegendCustomItem(); break; case ObjectType.ChartLegendCustomItemCell: persistable = new ChartLegendCustomItemCell(); break; case ObjectType.ChartAlignType: persistable = new ChartAlignType(); break; case ObjectType.ChartElementPosition: persistable = new ChartElementPosition(); break; case ObjectType.ChartSmartLabel: persistable = new ChartSmartLabel(); break; case ObjectType.ChartStripLine: persistable = new ChartStripLine(); break; case ObjectType.ChartAxisTitle: persistable = new ChartAxisTitle(); break; case ObjectType.ChartCustomPaletteColor: persistable = new ChartCustomPaletteColor(); break; case ObjectType.GridLines: persistable = new ChartGridLines(); break; case ObjectType.ChartTickMarks: persistable = new ChartTickMarks(); break; case ObjectType.DataMember: persistable = new DataMember(); break; case ObjectType.CustomDataRow: persistable = new CustomDataRow(); break; case ObjectType.DataCell: persistable = new DataCell(); break; case ObjectType.Variable: persistable = new Variable(); break; case ObjectType.Page: persistable = new Page(); break; case ObjectType.Paragraph: persistable = new Paragraph(); break; case ObjectType.TextRun: persistable = new TextRun(); break; case ObjectType.Report: persistable = new Report(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.GaugePanel: persistable = new GaugePanel(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.GaugeMember: persistable = new GaugeMember(); break; case ObjectType.GaugeRow: persistable = new GaugeRow(); break; case ObjectType.GaugeCell: persistable = new GaugeCell(); break; case ObjectType.BackFrame: persistable = new BackFrame(); break; case ObjectType.CapImage: persistable = new CapImage(); break; case ObjectType.FrameBackground: persistable = new FrameBackground(); break; case ObjectType.FrameImage: persistable = new FrameImage(); break; case ObjectType.CustomLabel: persistable = new CustomLabel(); break; case ObjectType.GaugeImage: persistable = new GaugeImage(); break; case ObjectType.GaugeInputValue: persistable = new GaugeInputValue(); break; case ObjectType.GaugeLabel: persistable = new GaugeLabel(); break; case ObjectType.GaugePanelItem: persistable = new GaugePanelItem(); break; case ObjectType.GaugeTickMarks: persistable = new GaugeTickMarks(); break; case ObjectType.LinearGauge: persistable = new LinearGauge(); break; case ObjectType.LinearPointer: persistable = new LinearPointer(); break; case ObjectType.LinearScale: persistable = new LinearScale(); break; case ObjectType.NumericIndicator: persistable = new NumericIndicator(); break; case ObjectType.PinLabel: persistable = new PinLabel(); break; case ObjectType.PointerCap: persistable = new PointerCap(); break; case ObjectType.PointerImage: persistable = new PointerImage(); break; case ObjectType.RadialGauge: persistable = new RadialGauge(); break; case ObjectType.RadialPointer: persistable = new RadialPointer(); break; case ObjectType.RadialScale: persistable = new RadialScale(); break; case ObjectType.ScaleLabels: persistable = new ScaleLabels(); break; case ObjectType.ScalePin: persistable = new ScalePin(); break; case ObjectType.ScaleRange: persistable = new ScaleRange(); break; case ObjectType.IndicatorImage: persistable = new IndicatorImage(); break; case ObjectType.StateIndicator: persistable = new StateIndicator(); break; case ObjectType.Thermometer: persistable = new Thermometer(); break; case ObjectType.TickMarkStyle: persistable = new TickMarkStyle(); break; case ObjectType.TopImage: persistable = new TopImage(); break; case ObjectType.LookupInfo: persistable = new LookupInfo(); break; case ObjectType.LookupDestinationInfo: persistable = new LookupDestinationInfo(); break; case ObjectType.ReportSection: persistable = new ReportSection(); break; case ObjectType.MapFieldDefinition: persistable = new MapFieldDefinition(); break; case ObjectType.MapFieldName: persistable = new MapFieldName(); break; case ObjectType.MapLineLayer: persistable = new MapLineLayer(); break; case ObjectType.MapShapefile: persistable = new MapShapefile(); break; case ObjectType.MapPolygonLayer: persistable = new MapPolygonLayer(); break; case ObjectType.MapSpatialDataRegion: persistable = new MapSpatialDataRegion(); break; case ObjectType.MapSpatialDataSet: persistable = new MapSpatialDataSet(); break; case ObjectType.MapPointLayer: persistable = new MapPointLayer(); break; case ObjectType.MapTile: persistable = new MapTile(); break; case ObjectType.MapTileLayer: persistable = new MapTileLayer(); break; case ObjectType.MapField: persistable = new MapField(); break; case ObjectType.MapLine: persistable = new MapLine(); break; case ObjectType.MapPolygon: persistable = new MapPolygon(); break; case ObjectType.MapPoint: persistable = new MapPoint(); break; case ObjectType.MapLineTemplate: persistable = new MapLineTemplate(); break; case ObjectType.MapPolygonTemplate: persistable = new MapPolygonTemplate(); break; case ObjectType.MapMarkerTemplate: persistable = new MapMarkerTemplate(); break; case ObjectType.Map: persistable = new Map(this.m_parentReportItem); this.m_parentReportItem = (ReportItem)persistable; break; case ObjectType.MapBorderSkin: persistable = new MapBorderSkin(); break; case ObjectType.MapDataRegion: persistable = new MapDataRegion(this.m_parentReportItem); break; case ObjectType.MapMember: persistable = new MapMember(); break; case ObjectType.MapRow: persistable = new MapRow(); break; case ObjectType.MapCell: persistable = new MapCell(); break; case ObjectType.MapLocation: persistable = new MapLocation(); break; case ObjectType.MapSize: persistable = new MapSize(); break; case ObjectType.MapGridLines: persistable = new MapGridLines(); break; case ObjectType.MapBindingFieldPair: persistable = new MapBindingFieldPair(); break; case ObjectType.MapCustomView: persistable = new MapCustomView(); break; case ObjectType.MapDataBoundView: persistable = new MapDataBoundView(); break; case ObjectType.MapElementView: persistable = new MapElementView(); break; case ObjectType.MapViewport: persistable = new MapViewport(); break; case ObjectType.MapLimits: persistable = new MapLimits(); break; case ObjectType.MapColorScale: persistable = new MapColorScale(); break; case ObjectType.MapColorScaleTitle: persistable = new MapColorScaleTitle(); break; case ObjectType.MapDistanceScale: persistable = new MapDistanceScale(); break; case ObjectType.MapTitle: persistable = new MapTitle(); break; case ObjectType.MapLegend: persistable = new MapLegend(); break; case ObjectType.MapLegendTitle: persistable = new MapLegendTitle(); break; case ObjectType.MapBucket: persistable = new MapBucket(); break; case ObjectType.MapColorPaletteRule: persistable = new MapColorPaletteRule(); break; case ObjectType.MapColorRangeRule: persistable = new MapColorRangeRule(); break; case ObjectType.MapCustomColorRule: persistable = new MapCustomColorRule(); break; case ObjectType.MapCustomColor: persistable = new MapCustomColor(); break; case ObjectType.MapLineRules: persistable = new MapLineRules(); break; case ObjectType.MapPolygonRules: persistable = new MapPolygonRules(); break; case ObjectType.MapSizeRule: persistable = new MapSizeRule(); break; case ObjectType.MapMarkerImage: persistable = new MapMarkerImage(); break; case ObjectType.MapMarker: persistable = new MapMarker(); break; case ObjectType.MapMarkerRule: persistable = new MapMarkerRule(); break; case ObjectType.MapPointRules: persistable = new MapPointRules(); break; case ObjectType.PageBreak: persistable = new PageBreak(); break; case ObjectType.DataScopeInfo: persistable = new DataScopeInfo(); break; case ObjectType.LinearJoinInfo: persistable = new LinearJoinInfo(); break; case ObjectType.IntersectJoinInfo: persistable = new IntersectJoinInfo(); break; case ObjectType.BucketedDataAggregateInfos: persistable = new BucketedDataAggregateInfos(); break; case ObjectType.DataAggregateInfoBucket: persistable = new DataAggregateInfoBucket(); break; case ObjectType.NumericIndicatorRange: persistable = new NumericIndicatorRange(); break; case ObjectType.IndicatorState: persistable = new IndicatorState(); break; case ObjectType.SharedDataSetQuery: persistable = new SharedDataSetQuery(); break; case ObjectType.DataSetCore: persistable = new DataSetCore(); break; case ObjectType.DataSetParameterValue: persistable = new DataSetParameterValue(); break; case ObjectType.RIFVariantContainer: persistable = new RIFVariantContainer(); break; case ObjectType.IdcRelationship: persistable = new IdcRelationship(); break; case ObjectType.DefaultRelationship: persistable = new DefaultRelationship(); break; case ObjectType.JoinCondition: persistable = new Relationship.JoinCondition(); break; case ObjectType.BandLayoutOptions: persistable = new BandLayoutOptions(); break; case ObjectType.LabelData: persistable = new LabelData(); break; case ObjectType.Slider: persistable = new Slider(); break; case ObjectType.Coverflow: persistable = new Coverflow(); break; case ObjectType.PlayAxis: persistable = new PlayAxis(); break; case ObjectType.BandNavigationCell: persistable = new BandNavigationCell(); break; case ObjectType.Tabstrip: persistable = new Tabstrip(); break; case ObjectType.NavigationItem: persistable = new NavigationItem(); break; case ObjectType.ScopedFieldInfo: persistable = new ScopedFieldInfo(); break; default: Global.Tracer.Assert(false, "Unsupported object type: " + objectType.ToString()); break; } IDOwner iDOwner = persistable as IDOwner; if (iDOwner != null) { iDOwner.ParentInstancePath = this.m_parentIDOwner; this.m_parentIDOwner = iDOwner; } persistable.Deserialize(context); this.m_parentIDOwner = parentIDOwner; this.m_parentReportItem = parentReportItem; return(persistable); }