public byte[] ToByteArray() throws IOException {
   byte[] Result = new byte[Size];
   int Idx = 0;
   // .
   byte[] BA = TDataConverter.ConvertInt32ToLEByteArray(id);
   System.arraycopy(BA, 0, Result, Idx, BA.length);
   Idx += BA.length;
   BA = TDataConverter.ConvertInt32ToLEByteArray(DivX);
   System.arraycopy(BA, 0, Result, Idx, BA.length);
   Idx += BA.length;
   BA = TDataConverter.ConvertInt32ToLEByteArray(DivY);
   System.arraycopy(BA, 0, Result, Idx, BA.length);
   Idx += BA.length;
   BA = TDataConverter.ConvertDoubleToLEByteArray(SegmentWidth);
   System.arraycopy(BA, 0, Result, Idx, BA.length);
   Idx += BA.length;
   BA = TDataConverter.ConvertDoubleToLEByteArray(SegmentHeight);
   System.arraycopy(BA, 0, Result, Idx, BA.length);
   Idx += BA.length;
   BA = TDataConverter.ConvertDoubleToLEByteArray(VisibleMinScale);
   System.arraycopy(BA, 0, Result, Idx, BA.length);
   Idx += BA.length;
   BA = TDataConverter.ConvertDoubleToLEByteArray(VisibleMaxScale);
   System.arraycopy(BA, 0, Result, Idx, BA.length);
   Idx += BA.length;
   // .
   return Result;
 }
 public byte[] ToByteArrayV1() throws IOException {
   ByteArrayOutputStream BOS = new ByteArrayOutputStream(1024);
   try {
     BOS.write(super.ToByteArrayV1());
     // .
     BOS.write(N0.ToByteArray());
     BOS.write(N1.ToByteArray());
     BOS.write(N2.ToByteArray());
     BOS.write(N3.ToByteArray());
     // .
     byte[] BA = TDataConverter.ConvertInt32ToLEByteArray(Width);
     BOS.write(BA);
     BA = TDataConverter.ConvertInt32ToLEByteArray(Height);
     BOS.write(BA);
     // .
     int DataSize = 0;
     if (Levels != null) DataSize = Levels.length * TLevelParams.Size;
     BA = TDataConverter.ConvertInt32ToLEByteArray(DataSize);
     BOS.write(BA);
     if (DataSize > 0) for (int I = 0; I < Levels.length; I++) BOS.write(Levels[I].ToByteArray());
     // .
     return BOS.toByteArray(); // . ->
   } finally {
     BOS.close();
   }
 }
Пример #3
0
 public byte[] ToByteArray() throws IOException {
   byte[] BA;
   byte[] B1A = new byte[1];
   byte[] Int64Space = new byte[4];
   ByteArrayOutputStream BOS = new ByteArrayOutputStream(1024);
   try {
     BA = TDataConverter.ConvertInt32ToLEByteArray(ID);
     BOS.write(BA);
     BOS.write(Int64Space);
     // .
     BA = TDataConverter.ConvertInt16ToLEByteArray(Level);
     BOS.write(BA);
     // .
     BA = TDataConverter.ConvertInt16ToLEByteArray(InfoComponent_Type);
     BOS.write(BA);
     // .
     BA = TDataConverter.ConvertInt32ToLEByteArray(InfoComponent_ID);
     BOS.write(BA);
     BOS.write(Int64Space);
     // .
     BA = TDataConverter.ConvertDoubleToLEByteArray(BindingPointX);
     BOS.write(BA);
     // .
     BA = TDataConverter.ConvertDoubleToLEByteArray(BindingPointY);
     BOS.write(BA);
     // .
     BA = TDataConverter.ConvertDoubleToLEByteArray(BaseSquare);
     BOS.write(BA);
     // .
     BA = TDataConverter.ConvertInt32ToLEByteArray(InfoImageDATAFileID);
     BOS.write(BA);
     BOS.write(Int64Space);
     // .
     B1A[0] = (byte) InfoString.length();
     BOS.write(B1A);
     if (B1A[0] > 0) BOS.write(InfoString.getBytes("windows-1251"));
     // .
     BA = TDataConverter.ConvertInt32ToLEByteArray(InfoStringFontColor);
     BOS.write(BA);
     // .
     B1A[0] = InfoStringFontSize;
     BOS.write(B1A);
     // .
     B1A[0] = (byte) InfoStringFontName.length();
     BOS.write(B1A);
     if (B1A[0] > 0) BOS.write(InfoStringFontName.getBytes("windows-1251"));
     // .
     return BOS.toByteArray();
   } finally {
     BOS.close();
   }
 }
Пример #4
0
 public void Save() throws IOException {
   if (Items != null) {
     FileOutputStream FOS = new FileOutputStream(ElectedPlaceFileName);
     try {
       byte[] BA = TDataConverter.ConvertInt32ToLEByteArray(ElectedPlaceFileVersion);
       FOS.write(BA);
       int ItemsCount = Items.size();
       BA = TDataConverter.ConvertInt32ToLEByteArray(ItemsCount);
       FOS.write(BA);
       for (int I = 0; I < ItemsCount; I++) {
         BA = Items.get(I).ToByteArray();
         FOS.write(BA);
       }
     } finally {
       FOS.close();
     }
   } else {
     File F = new File(ElectedPlaceFileName);
     F.delete();
   }
 }
Пример #5
0
 public synchronized void SaveItems() throws IOException {
   FileOutputStream FOS = new FileOutputStream(HintsFileName);
   try {
     byte[] ItemsCountBA = TDataConverter.ConvertInt32ToLEByteArray(ItemsCount);
     FOS.write(ItemsCountBA);
     TSpaceHint Item = Items;
     while (Item != null) {
       byte[] BA = Item.ToByteArray();
       short ItemDataSize = (short) BA.length;
       byte[] ItemDataSizeBA = TDataConverter.ConvertInt16ToLEByteArray(ItemDataSize);
       FOS.write(ItemDataSizeBA);
       FOS.write(BA);
       // .
       Item = Item.Next;
     }
   } finally {
     FOS.close();
   }
 }
Пример #6
0
 @SuppressWarnings({"null", "unused"})
 public void GetHintsFromServer(TReflectionWindow ReflectionWindow, TCanceller Canceller)
     throws Exception {
   if (Reflector.flOffline) return; // . ->
   TReflectionWindowStruc RW = ReflectionWindow.GetWindow();
   TReflectorSpaceLays Lays = ReflectionWindow.getLays();
   TReflectionWindowActualityInterval ActualityInterval = ReflectionWindow.GetActualityInterval();
   // .
   String URL1 = Reflector.Server.Address;
   // . add command path
   URL1 =
       "http://"
           + URL1
           + "/"
           + "Space"
           + "/"
           + "2" /*URLProtocolVersion*/
           + "/"
           + Long.toString(Reflector.User.UserID);
   String URL2 = "SpaceWindow.png";
   // . add command parameters
   URL2 =
       URL2
           + "?"
           + "5" /*command version*/
           + ","
           + Double.toString(RW.X0)
           + ","
           + Double.toString(RW.Y0)
           + ","
           + Double.toString(RW.X1)
           + ","
           + Double.toString(RW.Y1)
           + ","
           + Double.toString(RW.X2)
           + ","
           + Double.toString(RW.Y2)
           + ","
           + Double.toString(RW.X3)
           + ","
           + Double.toString(RW.Y3)
           + ",";
   short[] InvisibleLays = Lays.GetDisabledLaysIndexes();
   short InvisibleLaysCount;
   if (InvisibleLays != null) InvisibleLaysCount = (short) InvisibleLays.length;
   else InvisibleLaysCount = 0;
   URL2 = URL2 + Integer.toString(InvisibleLaysCount) + ",";
   for (int I = 0; I < InvisibleLaysCount; I++)
     URL2 = URL2 + Integer.toString(InvisibleLays[I]) + ',';
   URL2 = URL2 + Integer.toString(Reflector.VisibleFactor) + ",";
   URL2 = URL2 + "1" /*Dynamic hint data version*/ + ",";
   // . Visualization UserData
   int TSVUserDataSize = 0;
   byte[] TSVUserData = null;
   if (TSVUserData != null) TSVUserDataSize = TSVUserData.length;
   int Idx = 0;
   byte[] UserData = new byte[4 /*SizeOf(TSVUserDataSize)*/ + TSVUserDataSize];
   byte[] BA = TDataConverter.ConvertInt32ToLEByteArray(TSVUserDataSize);
   System.arraycopy(BA, 0, UserData, Idx, BA.length);
   Idx += BA.length;
   if (TSVUserDataSize > 0) {
     System.arraycopy(TSVUserData, 0, UserData, Idx, TSVUserData.length);
     Idx += TSVUserData.length;
   }
   String UserDataString;
   ByteArrayOutputStream BOS = new ByteArrayOutputStream();
   try {
     Base64OutputStream B64S = new Base64OutputStream(BOS, Base64.URL_SAFE);
     try {
       B64S.write(UserData);
     } finally {
       B64S.close();
     }
     UserDataString = new String(BOS.toByteArray());
   } finally {
     BOS.close();
   }
   URL2 = URL2 + UserDataString + ",";
   // .
   URL2 =
       URL2
           + Double.toString(ActualityInterval.GetBeginTimestamp())
           + ","
           + Double.toString(ActualityInterval.EndTimestamp)
           + ",";
   // .
   URL2 =
       URL2
           + Integer.toString(RW.Xmn)
           + ","
           + Integer.toString(RW.Ymn)
           + ","
           + Integer.toString(RW.Xmx)
           + ","
           + Integer.toString(RW.Ymx);
   boolean flUpdateProxySpace = false;
   if (flUpdateProxySpace) URL2 = URL2 + "," + "1" /*flUpdateProxySpace = true*/;
   // .
   byte[] URL2_Buffer;
   try {
     URL2_Buffer = URL2.getBytes("windows-1251");
   } catch (Exception E) {
     URL2_Buffer = null;
   }
   byte[] URL2_EncryptedBuffer = Reflector.User.EncryptBufferV2(URL2_Buffer);
   // . encode string
   StringBuffer sb = new StringBuffer();
   for (int I = 0; I < URL2_EncryptedBuffer.length; I++) {
     String h = Integer.toHexString(0xFF & URL2_EncryptedBuffer[I]);
     while (h.length() < 2) h = "0" + h;
     sb.append(h);
   }
   URL2 = sb.toString();
   // .
   String URL = URL1 + "/" + URL2 + ".png";
   // .
   HttpURLConnection Connection = Reflector.Server.OpenConnection(URL);
   try {
     InputStream in = Connection.getInputStream();
     try {
       if (Canceller != null) Canceller.Check();
       // .
       byte[] HintDataSizeBA = new byte[4];
       TNetworkConnection.InputStream_ReadData(
           in, HintDataSizeBA, HintDataSizeBA.length, Canceller, Reflector.context);
       int HintDataSize = TDataConverter.ConvertLEByteArrayToInt32(HintDataSizeBA, 0);
       byte[] HintData = new byte[HintDataSize];
       TNetworkConnection.InputStream_ReadData(
           in, HintData, HintDataSize, Canceller, Reflector.context);
       HintData = UnPackByteArray(HintData);
       ReviseItemsInReflectionWindow(RW, HintData, Canceller);
       FromByteArray(HintData, Canceller);
     } finally {
       in.close();
     }
   } finally {
     Connection.disconnect();
   }
 }