Label getLabelFor(Classes.Image e, ref int y) { int y_offset = y - gbMessages.VerticalScroll.Value; var lbl = new Label(); lbl.Tag = e; lbl.Text = $"{e.UploadedBy.DisplayName} uploaded {e.Name}:"; lbl.MaximumSize = new Size(gbMessages.Width - 15, 0); lbl.AutoSize = true; lbl.Location = new Point(5, y_offset); y += 5; return(lbl); }
void FormStatsLoad(object sender, EventArgs e) { bitmap = new Classes.Image(pic.Width, pic.Height); //loading of values Random rnd = new Random(); for (var i = 0; i < values.Length; i++) { values[i] = 0.1f + rnd.Next(24) / 24f; aux_values[i] = 0f; } timer1.Start(); }
private void Client_NewImageUploaded(object sender, Classes.Image e) { if (CurrentlyUploadingSlices > 0) { Client_UploadStatus(this, new UploadStatusEvent(e, e.MaximumSlices)); CurrentlyUploadingSlices = 0; } CurrentlyUploadingSlices = 0; var lbl = getLabelFor(e, ref MESSAGE_Y); this.gbMessages.Controls.Add(lbl); MESSAGE_Y += lbl.Height; var pb = getPictureBoxFor(e, ref MESSAGE_Y); this.gbMessages.Controls.Add(pb); MESSAGE_Y += pb.Height; }
private void btnUpload_Click(object sender, EventArgs e) { if (CurrentlyUploadingSlices > 0 && e != null) { return; } var dialog = new OpenFileDialog(); dialog.InitialDirectory = "C:\\"; dialog.Title = "Select Image to Upload"; dialog.Filter = "Image files|*.jpg;*.jpeg;*.png;*.gif;*.bmp"; dialog.CheckFileExists = true; dialog.CheckPathExists = true; dialog.ShowDialog(this); if (string.IsNullOrWhiteSpace(dialog.FileName)) { return; } var path = System.IO.Path.GetFileName(dialog.FileName); var image = new Classes.Image(path, Client.CurrentUser); image.Id = _imageInProgressId++; if (!Directory.Exists("Images")) { Directory.CreateDirectory("Images"); } if (!Directory.Exists($"Images/{image.UploadedBy.Id}")) { Directory.CreateDirectory($"Images/{image.UploadedBy.Id}"); } if (!Directory.Exists($"Images/{image.UploadedBy.Id}/{image.Id}")) { Directory.CreateDirectory($"Images/{image.UploadedBy.Id}/{image.Id}"); } File.Copy(dialog.FileName, image.Path, true); image.LoadImageIntoString(); CurrentlyUploadingSlices = image.Slices.Count; var packet = new Packet(PacketId.RequestUploadImage, image.ToJson(true)); Client.Send(packet.ToString()); Common.AddImage(image); }
PictureBox getPictureBoxFor(Classes.Image image, ref int y) { int y_offset = y - gbMessages.VerticalScroll.Value; var pb = new PictureBox(); var loadedImage = System.Drawing.Image.FromStream(image.GetStream()); pb.Image = loadedImage; pb.Location = new Point(5, y_offset); pb.Tag = image; pb.MaximumSize = new Size(gbMessages.Size.Width - 50, 0); pb.Size = new Size( Math.Min(gbMessages.Size.Width - 50, loadedImage.Width), Math.Min(gbMessages.Size.Width - 50, loadedImage.Height) // maximum square ); pb.SizeMode = PictureBoxSizeMode.Zoom; pb.BackColor = Color.Gray; y += 5; return(pb); }
public FormStatsOrigin(int[] val) { values = val; for (var i = 0; i < 24; i++) { createText("120", 300, 300); } InitializeComponent(); bitmap = new Classes.Image(pic.Width, pic.Height); //loading of values Random rnd = new Random(); for (var i = 0; i < values.Length; i++) { values[i] = rnd.Next(50); } //get max value for (int i = 0; i < values.Length; i++) { if (values[i] > max_value) { max_value = values[i]; } } //drawing of graphs int w = 26; if (max_value > 0) { bitmap.clear(); for (int i = 0; i < 24; i++) { float v = (float)(values[i] / max_value); if (v < 0.162f && v != 0f) { v = 0.162f; } bitmap.graph(w * i, 150, v, 22, 130, 0); int offx = 0; texts[i].Text = "" + values[i]; if (values[i] < 10) { offx = 4; } texts[i].Location = new System.Drawing.Point(pic.Location.X + offx + w * i, (int)(pic.Location.Y + 125 - ((float)(values[i] / max_value) * 130))); if (texts[i].Location.Y > pic.Location.Y + 130 - 25) { texts[i].Location = new System.Drawing.Point(pic.Location.X + offx + w * i, pic.Location.Y + 130 - 25); } } pic.Image = bitmap.getBitmap(); } }
private void HandleConnMessage(Connection connection, User user, Packet packet) { if (packet.Id == PacketId.SendMessage) { var msg = new Message(); msg.FromJson(packet.Information); if (msg.Content.Length > 256) { msg = new Message(); msg.Content = $"Error: Message was too long"; msg.Author = Menu.Server.SERVERUSER; msg.Colour = System.Drawing.Color.Red; SendTo(user, new Packet(PacketId.NewMessage, msg.ToJson())); return; } if (string.IsNullOrWhiteSpace(msg.Content)) { msg = new Message(); msg.Content = $"Error: Message was empty, whitespace or null."; msg.Author = Menu.Server.SERVERUSER; msg.Colour = System.Drawing.Color.Red; SendTo(user, new Packet(PacketId.NewMessage, msg.ToJson())); return; } if (user.SavedValues.TryGetValue("muted", out var val) && bool.TryParse(val, out var muted) && muted) { msg = new Message(); msg.Content = $"Error: you are muted"; msg.Author = Menu.Server.SERVERUSER; msg.Colour = System.Drawing.Color.Red; SendTo(user, new Packet(PacketId.NewMessage, msg.ToJson())); return; } msg.Id = Common.IterateMessageId(); Common.AddMessage(msg); NewMessage?.Invoke(this, msg); // so Server can see all messages if (msg.Content.StartsWith("/")) { // command, so we dont broadcast to all users try { Menu.Server.Commands.Execute(msg); } catch (Exception ex) { Logger.LogMsg(ex.ToString(), LogSeverity.Error); var reply = new Classes.Message(); reply.Author = Menu.Server.SERVERUSER; reply.Id = Common.IterateMessageId(); reply.Colour = System.Drawing.Color.Red; SendTo(user, new Packet(PacketId.NewMessage, reply.ToJson())); } } else { // non-command, so we broadcast var pong = new Packet(PacketId.NewMessage, msg.ToJson()); Broadcast(pong); } } else if (packet.Id == PacketId.Disconnect) { HandleConnDisconnect(connection, new Exception("User self-disconnected")); } else if (packet.Id == PacketId.RequestDeleteMessage) { var id = packet.Information["id"].ToObject <uint>(); if (Common.TryGetMessage(id, out var msg)) { if (msg.Author.Id != user.Id && user.Id != Menu.Server.SERVERUSER.Id) { var errMsg = new Message(); errMsg.Author = Menu.Server.SERVERUSER; errMsg.Id = 0; errMsg.Content = $"Error: Cannot delete message since you are not the author"; errMsg.Colour = Color.Red; SendTo(user, new Packet(PacketId.NewMessage, errMsg.ToJson())); return; } var jobj = new JObject(); jobj["id"] = id; var pong = new Packet(PacketId.MessageDeleted, jobj); Broadcast(pong); } } else if (packet.Id == PacketId.RequestEditMessage) { } else if (packet.Id == PacketId.RequestUploadImage) { var image = new Classes.Image(); image.FromJson(packet.Information); if ((Menu.Client?.Client?.CurrentUser?.Id ?? (uint)0) == user.Id) { // Local user, so no need to upload image (since its already there) if (Common.TryGetImage(image.Id, out var old)) { Common.Images.Remove(image.Id); old.Id = Common.IterateImageId(); Common.AddImage(old); image = old; } var otherPacket = new Packet(PacketId.ImageInitialInformation, image.ToJson(true)); Broadcast(otherPacket); return; } var jobj = new JObject(); jobj["slice"] = 0; jobj["originalId"] = image.Id; image.Id = Common.IterateImageId(); Common.AddImage(image); jobj["id"] = image.Id; var pongPacket = new Packet(PacketId.ImageNeedSlice, jobj); SendTo(user, pongPacket); } else if (packet.Id == PacketId.ImageSlice) { var id = packet.Information["id"].ToObject <uint>(); var sliceNum = packet.Information["slice"].ToObject <int>(); var done = packet.Information["done"].ToObject <bool>(); var content = packet.Information["data"].ToObject <string>(); if (Common.TryGetImage(id, out var image)) { image.SetSlice(sliceNum, content); if (done) { var loadedImage = System.Drawing.Image.FromStream(image.GetStream()); string[] pathDirs = image.Path.Split('/'); pathDirs = pathDirs.Reverse().Skip(1).Reverse().ToArray(); string temp = ""; foreach (var path in pathDirs) { temp += path + "/"; if (!Directory.Exists(temp)) { Directory.CreateDirectory(temp); } } loadedImage.Save(image.Path); var otherPacket = new Packet(PacketId.ImageInitialInformation, image.ToJson(true)); Broadcast(otherPacket); } else { var jobj = new JObject(); jobj["id"] = image.Id; jobj["slice"] = sliceNum + 1; var pongPacket = new Packet(PacketId.ImageNeedSlice, jobj); SendTo(user, pongPacket); } } } else if (packet.Id == PacketId.ImageNeedSlice) { var id = packet.Information["id"].ToObject <uint>(); var sliceNum = packet.Information["slice"].ToObject <int>(); if (Common.TryGetImage(id, out var image)) { var slice = image.Slices[sliceNum]; var jobj = new JObject(packet.Information); jobj["done"] = (sliceNum == image.Slices.Count - 1); jobj["data"] = slice; var pongPacket = new Packet(PacketId.ImageSlice, jobj); SendTo(user, pongPacket); } } else if (packet.Id == PacketId.NeedUserInfo) { var id = packet.Information["id"].ToObject <uint>(); var usr = Common.GetUser(id); var pong = new Packet(PacketId.RespondUserInfo, usr.ToJson()); SendTo(user, pong); } }
public FormStatsQuantity(int[] val, int month, int year) { values = val; for (int i = 0; i < values.Length; i++) { createText((i + 1) + "/" + month, 4 + i * 40, 205); } for (var i = 0; i < values.Length; i++) { createText2("120", 300, 300); } InitializeComponent(); for (int i = 0; i < texts.Count; i++) { panel1.Controls.Add(texts[i]); panel1.Controls.Add(texts2[i]); texts[i].BringToFront(); texts2[i].BringToFront(); } bitmap = new Classes.Image(pic.Width, pic.Height); //loading of values var guests = DBConn.getTotalGuests("where ingreso >= '" + year + "-" + month + "-1' and ingreso <= '" + year + "-" + month + values.Length + "'") /*from g in DBConn.getGuests() * where g.ingreso > DateTime.Parse("30/9/2018") && g.ingreso < DateTime.Parse("1/11/2018") * select g*/; guests.ForEach(x => Console.WriteLine(x.ingreso.ToShortDateString())); for (int i = 0; i < values.Length; i++) { var s = (i + 1).ToString() + "/" + month + "/" + year; values[i] = guests.FindAll(x => x.ingreso.Date == DateTime.Parse(s)).Count; } //get of max value for (int i = 0; i < values.Length; i++) { if (values[i] > max_value) { max_value = values[i]; } } for (int i = 0; i < values.Length; i++) { bitmap.graph(i * 40, 200, values[i] / ((max_value == 0) ? 1 : max_value), 36, 170, 0); int offx = 5; if (values[i] < 10) { offx = 10; } texts2[i].Location = new System.Drawing.Point(pic.Location.X + offx + 40 * i, (int)(pic.Location.Y + 175 - ((float)(values[i] / ((max_value == 0) ? 1 : max_value)) * 170))); texts2[i].Text = "" + values[i]; } pic.Image = bitmap.getBitmap(); }
void parseJson(object sender, string json) { Logger.LogMsg("Recieved: " + json); var packet = new Packet(json); if (packet.Id == PacketId.NewMessage) { var msg = new Message(); msg.FromJson(packet.Information); Form.Invoke(new Action(() => { NewMessage?.Invoke(this, msg); })); } else if (packet.Id == PacketId.GiveIdentity) { var usr = new User(); usr.FromJson(packet.Information); this.CurrentUser = usr; Form.Invoke(new Action(() => { IdentityKnown?.Invoke(this, usr); })); } else if (packet.Id == PacketId.UserUpdate) { var usr = new User(); usr.FromJson(packet.Information); Form.Invoke(new Action(() => { UserUpdate?.Invoke(this, usr); })); } else if (packet.Id == PacketId.UserLeft) { var usr = new User(); usr.FromJson(packet.Information); Form.Invoke(new Action(() => { UserDisconnected?.Invoke(this, usr); })); } else if (packet.Id == PacketId.SetMonitorState) { var state = packet.Information["state"].ToObject <bool>(); Form.Invoke(new Action(() => { SetMonitorState?.Invoke(this, state); })); } else if (packet.Id == PacketId.Disconnect) { this.Close(); } else if (packet.Id == PacketId.MessageDeleted) { var id = packet.Information["id"].ToObject <uint>(); Form.Invoke(new Action(() => { MessageDeleted?.Invoke(this, id); })); } else if (packet.Id == PacketId.ImageNeedSlice) { // Server needs us to send the slice. var id = packet.Information["id"].ToObject <uint>(); var shiftedId = (uint)0; if (packet.Information.TryGetValue("originalId", out var val)) { shiftedId = id; id = val.ToObject <uint>(); } var sliceNum = packet.Information["slice"].ToObject <int>(); if (Common.Images.TryGetValue(id, out var image)) { if (shiftedId > 0) { // move it into the new location, remove old one. Common.Images[shiftedId] = image; } var slice = image.Slices[sliceNum]; var jobj = new JObject(packet.Information); jobj["done"] = (sliceNum == image.Slices.Count - 1); jobj["data"] = slice; var pongPacket = new Packet(PacketId.ImageSlice, jobj); Send(pongPacket.ToString()); Form.Invoke(new Action(() => { UploadStatus?.Invoke(this, new UploadStatusEvent(image, sliceNum)); })); } } else if (packet.Id == PacketId.ImageInitialInformation) { var image = new Classes.Image(); image.FromJson(packet.Information); if (Common.TryGetImage(image.Id, out var existingImage)) { if (existingImage.Slices.Count == image.MaximumSlices) { // We already have this image, so we dont need to download it Form.Invoke(new Action(() => { NewImageUploaded?.Invoke(this, existingImage); })); return; } } Common.AddImage(image); var jobj = new JObject(); jobj["id"] = image.Id; jobj["slice"] = 0; var response = new Packet(PacketId.ImageNeedSlice, jobj); Send(response.ToString()); } else if (packet.Id == PacketId.ImageSlice) { var id = packet.Information["id"].ToObject <uint>(); var sliceNum = packet.Information["slice"].ToObject <int>(); var done = packet.Information["done"].ToObject <bool>(); var content = packet.Information["data"].ToObject <string>(); if (Common.TryGetImage(id, out var image)) { image.SetSlice(sliceNum, content); if (done) { Form.Invoke(new Action(() => { NewImageUploaded?.Invoke(this, image); })); } else { var jobj = new JObject(); jobj["id"] = image.Id; jobj["slice"] = sliceNum + 1; var pongPacket = new Packet(PacketId.ImageNeedSlice, jobj); Send(pongPacket.ToString()); Form.Invoke(new Action(() => { Form.pbProgressBar.Maximum = image.MaximumSlices; Form.pbProgressBar.Value = sliceNum; Form.pbProgressBar.Tag = $"Downloading image '{image.Name}'; {sliceNum}/{image.MaximumSlices} {((int)(sliceNum + 1 / image.MaximumSlices + 1))}"; })); } } } }