webengine/wmlengine/src/text/src/Latin1.c
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/wmlengine/src/text/src/Latin1.c	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2000 - 2001 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include "nw_text_latin1i.h"
+#include "BrsrStatusCodes.h"
+
+/* ------------------------------------------------------------------------- *
+   static data
+ * ------------------------------------------------------------------------- */
+
+/* ------------------------------------------------------------------------- */
+const NW_Text_Latin1_Class_t NW_Text_Latin1_Class = {
+  { /* NW_Object_Core     */
+    /* super              */ &NW_Text_FixedWidth_Class,
+    /* queryInterface     */ _NW_Object_Base_QueryInterface
+  },
+  { /* NW_Object_Base     */
+    /* interfaceList      */ NULL
+  },
+  { /* NW_Object_Dynamic  */
+    /* instanceSize       */ sizeof (NW_Text_Latin1_t),
+    /* construct          */ _NW_Text_Abstract_Construct,
+    /* destruct           */ NULL
+  },
+  { /* NW_Text_Abstract   */
+    /* createIterator     */ _NW_Text_FixedWidth_CreateIterator,
+    /* getStorageSize     */ _NW_Text_FixedWidth_GetStorageSize,
+    /* getCharacterAt     */ _NW_Text_Latin1_GetCharacterAt,
+    /* getUCS2Buffer      */ _NW_Text_Abstract_GetUCS2Buffer,
+    /* getSpaceAfter      */ _NW_Text_Latin1_GetSpaceAfter
+  },
+  { /* NW_Text_FixedWidth */
+    /* characterSize      */ sizeof (NW_Uint8)
+  },
+  { /* NW_Text_Latin1     */
+    /* unused             */ NW_Object_Unused
+  }
+};
+
+/* ------------------------------------------------------------------------- *
+   methods
+ * ------------------------------------------------------------------------- */
+
+/* ------------------------------------------------------------------------- */
+NW_Ucs4
+_NW_Text_Latin1_GetCharacterAt (const NW_Text_Abstract_t* abstractText,
+                                NW_Text_Length_t index)
+{
+  /* parameter assertion block */
+  NW_ASSERT (NW_Object_IsInstanceOf (abstractText, &NW_Text_Latin1_Class));
+
+  /* return the character */
+  return ((NW_Uint8*) abstractText->storage)[index];
+}
+
+/* ------------------------------------------------------------------------- *
+   convenience functions
+ * ------------------------------------------------------------------------- */
+
+/* ------------------------------------------------------------------------- */
+NW_Text_Latin1_t*
+NW_Text_Latin1_New (void* storage,
+                    NW_Text_Length_t characterCount,
+                    NW_Uint16 flags)
+{
+  NW_Text_Latin1_t*  text;
+
+  text = (NW_Text_Latin1_t*)
+    NW_Object_New (&NW_Text_Latin1_Class, storage, characterCount, (NW_Uint32)flags);
+
+  /* if given ownership of storage but failed to create an object, delete the storage */
+  if (text == NULL && flags & NW_Text_Flags_TakeOwnership) {
+    NW_Mem_Free (storage);
+  }
+
+  return text;
+}
+
+/* ------------------------------------------------------------------------- */
+TBrowserStatusCode
+NW_Text_Latin1_Initialize (NW_Text_Latin1_t* textLatin1,
+                           void* storage,
+                           NW_Text_Length_t characterCount,
+                           NW_Uint16 flags)
+{
+  return NW_Object_Initialize (&NW_Text_Latin1_Class, textLatin1, storage,
+                               characterCount, (NW_Uint32)flags);
+}
+
+/* ------------------------------------------------------------------------- */
+NW_Text_Length_t
+_NW_Text_Latin1_GetSpaceAfter (const NW_Text_Abstract_t* textLatin1,
+                               NW_Text_Length_t index)
+{
+  NW_Text_Length_t actualIndex = index;
+  NW_Uint8* storage;
+  NW_Uint32 len;
+  NW_ASSERT (NW_Object_IsInstanceOf (textLatin1, &NW_Text_Latin1_Class));
+  len = textLatin1->characterCount;
+  storage = (NW_Uint8*) textLatin1->storage;
+  for (actualIndex = index; actualIndex < len; actualIndex++)
+  {
+    if (*(storage + actualIndex) == 0x20 || *(storage + actualIndex) == 0x2E || *(storage + actualIndex) == 0x09)
+        return ++actualIndex;
+  }
+  return actualIndex;
+}