+ internal void load__(string uri)\r
+ {\r
+ AsyncBool = false;\r
+ var ur = new System.Uri(uri, System.UriKind.RelativeOrAbsolute);\r
+ Canvas.default_api_canvas.Dispatcher.BeginInvoke(new Action<Uri>(load_), ur);\r
+ while (!AsyncBool) { System.Threading.Thread.Sleep(10); }\r
+ }\r
+ internal void load_(Uri uri)\r
+ {\r
+ var bitmap = new BitmapImage();\r
+ bitmap.CreateOptions = BitmapCreateOptions.None;\r
+ bitmap.UriSource = uri;\r
+ try\r
+ {\r
+ var wbm = new System.Windows.Media.Imaging.WriteableBitmap(bitmap);\r
+ buffer = wbm;\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ buffer = new WriteableBitmap(64, 64);\r
+ buffer.ForEach(bitmap_drawChecker);\r
+ }\r
+ self_rect.set(buffer.PixelWidth, buffer.PixelHeight);\r
+ AsyncBool = true;\r
+ }\r
+ static System.Windows.Media.Color[] CHECKER_C;\r
+ static Image()\r
+ {\r
+ CHECKER_C = new System.Windows.Media.Color[2];\r
+ CHECKER_C[0] = System.Windows.Media.Color.FromArgb(0, 0, 0, 0);\r
+ CHECKER_C[1] = System.Windows.Media.Color.FromArgb(128,128,128,128);\r
+ }\r
+ static System.Windows.Media.Color bitmap_drawChecker(int x, int y)\r
+ {\r
+ return ((x / 4) + (y / 4)) % 2 == 0 ? CHECKER_C[0] : CHECKER_C[1];\r
+ }\r