From 0f2c6de1f33621bdcba280810c1d756eb0d6a704 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 18 Aug 2010 06:57:14 +0900 Subject: [PATCH] image --- dev4/psychlops/core/graphic/canvas.cs | 102 +++++++++++++++++++++++++--- dev4/psychlops/core/graphic/image.cs | 22 ++++-- dev4/psychlops/extention/standard/widget.cs | 27 +++++++- test4/MainPage.xaml.cs | 9 +++ test4/PsychlopsMain.cs | 13 +++- test4/PsychlopsSilverlight4test.csproj | 1 + test4/Resources/logo.png | Bin 0 -> 8396 bytes test4/TestPage.html | 4 +- 8 files changed, 158 insertions(+), 20 deletions(-) create mode 100644 test4/Resources/logo.png diff --git a/dev4/psychlops/core/graphic/canvas.cs b/dev4/psychlops/core/graphic/canvas.cs index c64f7f5..536bf48 100644 --- a/dev4/psychlops/core/graphic/canvas.cs +++ b/dev4/psychlops/core/graphic/canvas.cs @@ -9,6 +9,8 @@ using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Windows.Browser; +using System.Collections.Generic; + namespace Psychlops @@ -16,10 +18,10 @@ namespace Psychlops internal static partial class CONST { - internal static readonly uint MAX_OBJ_N = 1500; - internal static readonly uint MOBJ_N = 1000; - internal static readonly uint COBJ_N = 300; - internal static readonly uint HOBJ_N = 100; + internal static readonly Int32 MAX_OBJ_N = 1500; + internal static readonly Int32 MOBJ_N = 1000; + internal static readonly Int32 COBJ_N = 300; + internal static readonly Int32 HOBJ_N = 100; } namespace Templates @@ -126,6 +128,7 @@ namespace Psychlops internal int lettersPoolN; internal System.Windows.Controls.Image[] imagePool; internal int imagePoolN; + internal Dictionary imagePoolT; internal System.Windows.Controls.Canvas[] groupPool; internal int groupPoolN; @@ -138,8 +141,8 @@ namespace Psychlops public static System.Windows.Controls.UserControl default_panel; public static System.Windows.Controls.Canvas default_api_canvas; public static WriteableBitmap default_buffer; - System.Windows.Controls.Canvas api_canvas; - System.Windows.Controls.UserControl panel; + internal System.Windows.Controls.Canvas api_canvas; + internal System.Windows.Controls.UserControl panel; Rectangle back_panel; double width_, height_; Clock before; @@ -216,21 +219,26 @@ namespace Psychlops lettersPool[i] = new System.Windows.Controls.TextBlock(); } imagePool = new System.Windows.Controls.Image[CONST.HOBJ_N]; + imagePoolT = new Dictionary(CONST.HOBJ_N); groupPool = new System.Windows.Controls.Canvas[CONST.HOBJ_N]; for (int i = 0; i < CONST.HOBJ_N; i++) { imagePool[i] = new System.Windows.Controls.Image(); + imagePoolT.Add(imagePool[i].GetHashCode(), false); groupPool[i] = new System.Windows.Controls.Canvas(); } masterPool = new System.Windows.Controls.Canvas(); prevPool = new System.Windows.Controls.Canvas(); api_canvas.Children.Add(masterPool); + //api_canvas.Children.Remove(Internal.Main.widgetStack); Psychlops.Internal.Main.widgetStack = new StackPanel(); Psychlops.Internal.Main.widgetStack.Orientation = Orientation.Vertical; Psychlops.Internal.Main.widgetStack.Height = hei; api_canvas.Children.Add(Psychlops.Internal.Main.widgetStack); + + UIElementPool = new System.Windows.Controls.Canvas[CONST.MAX_OBJ_N]; dummyRectPool = new System.Windows.Shapes.Rectangle[CONST.MAX_OBJ_N]; @@ -247,6 +255,16 @@ namespace Psychlops AsyncInitBool = true; } + internal int findEmptyInPool(Dictionary pool) + { + /* + foreach( KeyValuePair elem in pool) + { + if(elem) + }*/ + return 0; + } + #endregion #region static initializer @@ -625,6 +643,9 @@ namespace Psychlops #region primitive tokenizer + + #region primitive + partial struct Point { public static implicit operator System.Windows.Point(Point d) @@ -673,6 +694,10 @@ namespace Psychlops return tmp; } } + + #endregion + + #region Line partial class Line { @@ -734,6 +759,10 @@ namespace Psychlops tmp.Visibility = Visibility.Visible; } } + + #endregion + + #region Rectangle partial class Rectangle { @@ -791,6 +820,10 @@ namespace Psychlops tmp.Visibility = Visibility.Visible; } } + + #endregion + + #region Ellipse partial class Ellipse { @@ -847,6 +880,10 @@ namespace Psychlops } } + #endregion + + #region Polygon + partial class Polygon { public Polygon dup() @@ -914,7 +951,11 @@ namespace Psychlops } } - + + #endregion + + #region Letters + partial class Letters { #region static initializer @@ -1014,19 +1055,60 @@ namespace Psychlops tmp.Visibility = Visibility.Visible; } } + + #endregion + + #region Image partial class Image { internal void initialize__(int wid, int hei) { + AsyncBool = false; Canvas.default_api_canvas.Dispatcher.BeginInvoke(new Canvas.TwoIntProcedure(create__), wid, hei); - //buffer = new WriteableBitmap(wid, hei); + while (!AsyncBool) { System.Threading.Thread.Sleep(10); } } internal void create__(int wid, int hei) { buffer = new WriteableBitmap(wid, hei); AsyncBool = true; } + internal void load__(string uri) + { + AsyncBool = false; + var ur = new System.Uri(uri, System.UriKind.RelativeOrAbsolute); + Canvas.default_api_canvas.Dispatcher.BeginInvoke(new Action(load_), ur); + while (!AsyncBool) { System.Threading.Thread.Sleep(10); } + } + internal void load_(Uri uri) + { + var bitmap = new BitmapImage(); + bitmap.CreateOptions = BitmapCreateOptions.None; + bitmap.UriSource = uri; + try + { + var wbm = new System.Windows.Media.Imaging.WriteableBitmap(bitmap); + buffer = wbm; + } + catch (Exception e) + { + buffer = new WriteableBitmap(64, 64); + buffer.ForEach(bitmap_drawChecker); + } + self_rect.set(buffer.PixelWidth, buffer.PixelHeight); + AsyncBool = true; + } + static System.Windows.Media.Color[] CHECKER_C; + static Image() + { + CHECKER_C = new System.Windows.Media.Color[2]; + CHECKER_C[0] = System.Windows.Media.Color.FromArgb(0, 0, 0, 0); + CHECKER_C[1] = System.Windows.Media.Color.FromArgb(128,128,128,128); + } + static System.Windows.Media.Color bitmap_drawChecker(int x, int y) + { + return ((x / 4) + (y / 4)) % 2 == 0 ? CHECKER_C[0] : CHECKER_C[1]; + } delegate void FieldFunc1(System.Func func); delegate void FieldFunc2(System.Func func); public void field__(System.Func func) @@ -1092,6 +1174,9 @@ namespace Psychlops } + #endregion + + #region Group partial class Group { @@ -1173,6 +1258,7 @@ namespace Psychlops } } + #endregion #endregion diff --git a/dev4/psychlops/core/graphic/image.cs b/dev4/psychlops/core/graphic/image.cs index 4c775ae..f4c48d9 100644 --- a/dev4/psychlops/core/graphic/image.cs +++ b/dev4/psychlops/core/graphic/image.cs @@ -21,12 +21,23 @@ namespace Psychlops{ public Rectangle self_rect; protected bool AsyncBool; + public Image(string uri) + { + self_rect = new Rectangle(); + load__(uri); + } + public Image(int wid, int hei) { - AsyncBool = false; + self_rect = new Rectangle(wid, hei); initialize__(wid, hei); + } + + public Image set(int wid, int hei) + { self_rect = new Rectangle(wid, hei); - while (!AsyncBool) { } + initialize__(wid, hei); + return this; } public Figure shift(Point p) @@ -53,26 +64,23 @@ namespace Psychlops{ public void field(System.Func func) { field__(func); - //buffer.ForEach(func); } public void field(System.Func func) { field__(func); - //buffer.ForEach(func); } public void each(System.Func func) { field__(func); - //buffer.ForEach(func); } public void each(System.Func func) { field__(func); - //buffer.ForEach(func); } - public void load() + public void load(string uri) { + load__(uri); } public void draw() diff --git a/dev4/psychlops/extention/standard/widget.cs b/dev4/psychlops/extention/standard/widget.cs index 9d5a71c..20cbfa3 100644 --- a/dev4/psychlops/extention/standard/widget.cs +++ b/dev4/psychlops/extention/standard/widget.cs @@ -8,6 +8,7 @@ using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Windows.Browser; +using System.Windows.Data; @@ -256,8 +257,30 @@ namespace Psychlops { internal delegate void VoidString(string s); internal delegate void VoidStringObject(String s, System.Object o); - + public class Double02fFormatter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + string formatString = parameter as string; + if (!string.IsNullOrEmpty(formatString)) + { + return string.Format(culture, formatString, value); + } + return string.Format("{0, -8:F}", value); + } + public object ConvertBack(object val, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + string str = val.ToString(); + double result; + var objCultureInfo = new System.Globalization.CultureInfo("en-US"); + if (Double.TryParse(str, System.Globalization.NumberStyles.Number, objCultureInfo, out result)) + { + return result; + } + return val; + } + } delegate void StackSlider_(Slider s); internal static void stackSlider(Slider s) @@ -286,6 +309,7 @@ namespace Psychlops Path = new PropertyPath("Value"), Mode = System.Windows.Data.BindingMode.TwoWay, Source = slide, + Converter = new Double02fFormatter() }; val.SetBinding(TextBox.TextProperty, b); ss.uislider = slide; @@ -293,6 +317,7 @@ namespace Psychlops val.Background = Color.null_color; val.BorderBrush = Color.null_color; val.Foreground = Color.white; + val.TextAlignment = TextAlignment.Right; holder.Background = Slider.bgcolor; diff --git a/test4/MainPage.xaml.cs b/test4/MainPage.xaml.cs index 0889ace..cfe5cf5 100644 --- a/test4/MainPage.xaml.cs +++ b/test4/MainPage.xaml.cs @@ -40,6 +40,15 @@ namespace PsychlopsSilverlight4test Psychlops.Internal.Main.statusBar = AppStatusBar; //Psychlops.Internal.Main.widgetStack = Controller; AppStatusBar.Text = "Now starting Psychlops environment... please wait a minute"; + + + var ur = new System.Uri("Resources/logo.png", System.UriKind.RelativeOrAbsolute); + var bitmap = new System.Windows.Media.Imaging.BitmapImage(ur); + var img = new System.Windows.Controls.Image(); + img.Source = bitmap; + System.Windows.Controls.Canvas.SetLeft(img, 100); + System.Windows.Controls.Canvas.SetTop(img, 100); + LayoutRoot.Children.Add(img); } protected void getFocusMouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { this.Focus(); diff --git a/test4/PsychlopsMain.cs b/test4/PsychlopsMain.cs index 2794969..b93f0d8 100644 --- a/test4/PsychlopsMain.cs +++ b/test4/PsychlopsMain.cs @@ -16,15 +16,19 @@ namespace PsychlopsSilverlight4test //Set Background Initial Value double Axis = 0.0, BGRadii = 150, BGSize = 5.0; Psychlops.Widgets.Slider thetaSpeed, DotNumber; + Image img; public void psychlops_main() - { + { cnvs = new Canvas(500, 500); + + img = new Image("Resources/logo.png"); + Interval rng = new Interval(); - thetaSpeed = new Psychlops.Widgets.Slider("Label" , -10 <= rng <= 10, 3.0); + thetaSpeed = new Psychlops.Widgets.Slider("Label", -10 <= rng <= 10, 3.0); DotNumber = new Psychlops.Widgets.Slider("DotNum", 0 <= rng <= 100, 50.0); //Declare background dots and target @@ -108,6 +112,11 @@ namespace PsychlopsSilverlight4test Target[i].draw(); } + img.centering(Mouse.position).draw(); + + cnvs.var(Mouse.position.x, 100, 100); + cnvs.var(Mouse.position.y, 100, 140); + //Reflect drawing at the next frame; cnvs.flip(); } diff --git a/test4/PsychlopsSilverlight4test.csproj b/test4/PsychlopsSilverlight4test.csproj index 5b49ffc..2d534ea 100644 --- a/test4/PsychlopsSilverlight4test.csproj +++ b/test4/PsychlopsSilverlight4test.csproj @@ -102,6 +102,7 @@ + diff --git a/test4/Resources/logo.png b/test4/Resources/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ebdc130270c398cff677b2fb72f889068617655f GIT binary patch literal 8396 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
- + - + Microsoft Silverlight を入手 -- 2.11.0