KR102052034B1 - 인스턴트 메시지 조직화 및 표시 장치 및 방법 - Google Patents

인스턴트 메시지 조직화 및 표시 장치 및 방법 Download PDF

Info

Publication number
KR102052034B1
KR102052034B1 KR1020180074556A KR20180074556A KR102052034B1 KR 102052034 B1 KR102052034 B1 KR 102052034B1 KR 1020180074556 A KR1020180074556 A KR 1020180074556A KR 20180074556 A KR20180074556 A KR 20180074556A KR 102052034 B1 KR102052034 B1 KR 102052034B1
Authority
KR
South Korea
Prior art keywords
sentence
command
user
message
text
Prior art date
Application number
KR1020180074556A
Other languages
English (en)
Inventor
김병진
Original Assignee
김병진
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 김병진 filed Critical 김병진
Priority to KR1020180074556A priority Critical patent/KR102052034B1/ko
Application granted granted Critical
Publication of KR102052034B1 publication Critical patent/KR102052034B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F17/2241

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

메시지들을 조직화하고 표시하기 위한 장치로서, 상기 장치는 프로세서를 포함하며, 상기 프로세서는, 상기 장치들 간에 교환되는 상기 메시지들을 구조화 방식으로 조직화하고 표시하기 위한 복수의 레이아웃 모드를 설정하고; 상기 복수의 레이아웃 모드 중에서 채팅 세션을 위한 하나의 레이아웃 모드를 결정하고; 상기 결정된 레이아웃 모드에서 상기 채팅 세션에 포함되는 메시지들을 디스플레이 상에 표시하고; 소정의 이벤트 발생시마다 디스플레이되는 모든 메시지들의 텍스트 박스 폭을 상기 구조화 방식으로 조정하며, 상기 이벤트는 상기 장치의 회전, 적어도 하나의 메시지의 송신 또는 수신, 적어도 하나의 메시지 표시방식에 대한 명령의 입력 중 적어도 하나를 포함한다.

Description

인스턴트 메시지 조직화 및 표시 장치 및 방법 {DEVICE AND METHOD FOR ORGANIZING AND DISPLAYING INSTANT MESSAGES}
본 발명은 다양한 구조화 방식들로 인스턴트 메시지들을 조직화하고 조직화된 인스턴트 메시지들을 디스플레이 상에 표시하기 위한 사용자 인터페이스를 제공하기 위한 장치 및 방법에 관한 것이다.
이 섹션에서의 설명은 본 발명과 관련된 배경 정보를 제공할 뿐이며 종래 기술을 구성하지 않는다.
사용자들이 인스턴트 메시징(instant messaging(이하, "IM"이라 함))을 통해 서로 교신할 때, 양 당사자는 다른 당사자가 보낸 송신한 질문 또는 소견에도 응답할 수 없는 경우가 있다. 본 발명자는 하나의 사용자가 다른 사용자에게 다수의 질문을 송신하고 다른 사용자가 이러한 질문들에 동시에 응답해야 할 수 있다는 점에 주목하였다. 이러한 일이 일어날 때, "응답자"는 어떤 질문에 송신자(들)가 응답받고 있는지를 설명해야 하는 정신적인 부담에 직면하며, 이것이 명확하게 설명되지 않았다면, 송신자(들)는 어떤 메시지가 송신자(들)가 송신한 질문에 대한 대답인지를 파악해야 하는 정신적인 부담에 직면한다. 본 발명자(들)는 둘보다 많은 사용자가 IM을 통해 서로 교신하는 경우 상황이 더 악화될 수 있다는 것을 직관적으로 경험했다. 본 발명자(들)는 복수의 사용자가 메시징 소프트웨어(또는 애플리케이션)를 통해 IM들을 송신하는 경우에 사용자가 IM을 통해 복수의 사용자에 대해 수신된 메시지들을 구별함에 있어서 혼란스럽거나 성가실 수 있고, 각각의 송신자 별로 누가 각각의 메시지들을 송신하는지를 식별하는 데에 부담을 느낄 수 있다는 것을 경험했다.
특허공개 제10-2013-0100320호 (2013.09.10)
본 발명자(들)는 공지된 IM 소프트웨어 또는 공지된 IM 애플리케이션이 응답자와 송신자(들) 사이에서 교신되거나 교환되는 메시지들을 터치스크린 디스플레이 상에 사용자 친화적으로 디스플레이 하기 위한 어떠한 사용자 인터페이스도 제공하지 않는다는 점에 주목했다.
본 발명의 일 양상에 따르면, 메시지들을 조직화하고 표시하기 위한 장치가 제공된다. 상기 장치는 프로세서를 포함하며, 상기 프로세서는, 상기 장치들 간에 교환되는 상기 메시지들을 구조화 방식으로 조직화하고 표시하기 위한 복수의 레이아웃 모드를 설정하고; 상기 복수의 레이아웃 모드 중에서 채팅 세션을 위한 하나의 레이아웃 모드를 결정하고; 상기 결정된 레이아웃 모드에서 상기 채팅 세션에 포함되는 메시지들을 디스플레이 상에 표시하고; 소정의 이벤트 발생시마다 디스플레이되는 모든 메시지들의 텍스트 박스 폭을 상기 구조화 방식으로 조정하며, 상기 이벤트는 상기 장치의 회전, 적어도 하나의 메시지의 송신 또는 수신, 메시지 표시방식에 대한 적어도 하나의 명령의 입력 중 적어도 하나를 포함한다.
상기 메시지는 응답하고자 하는 목표 메시지를 구체적으로 선택함에 의해 생성되는 응답 메시지를 포함한다.
상기 프로세서는 메시지 작성자에 의해 설정되는 메시지 만료 시간을 적어도 하나의 메시지에 포함시키며, 메시지 만료 시간이 설정된 메시지는 만료 시간에 상기 채팅 세션에 참여하는 모든 사용자 장치에서 삭제된다.
상기 메시지 만료 시간이 설정된 메시지는 그에 대한 응답이 불가능하도록 설정가능하다.
상기 프로세서는 내부화 타입, 외부화 타입 및 맞춤화 타입으로 구성되는 그룹으로부터 선택되는 하나의 타입으로 상기 메시지 표시방식에 대한 명령 세트를 설정하고, 상기 내부화 타입은 사용자의 손 제스처 입력에 따라 상기 명령 세트들이 디스플레이되는 타입이며, 상기 외부화 타입은 각 메시지와 함께 상기 명령 세트들이 디스플레이되는 타입이며, 상기 맞춤화 타입은 사용자의 손 제스처 입력에 따라 해당 손 제스처에 대응하는 명령이 표시없이 수행되는 타입이다.
상기 명령 세트는 적어도 응답, 축소, 확장, 삭제, UBD, 숨기기, 표시, 수정, 반전, 복원 명령을 포함하고, 각 명령은 독립적 내부화, 외부화 또는 맞춤화 타입 중 하나로 독립적으로 설정가능하다.
상기 명령은 모두 축소, 모두 확장, 모두 삭제, 모두 UBD, 모두 숨기기, 모두 표시, 증가, 감소를 더 포함한다.
상기 프로세서는 상기 메시지 표시방식에 대한 명령 세트를 설정하고, 상기 명령 세트는 적어도 축소, 확장, 모두 축소 및 모두 확장 명령을 포함하며, 상기 축소 명령은 상기 프로세서가 상기 축소 명령이 적용되는 문장의 하위 문장들이 표시되지 않도록 축소하는 동시에 상기 축소 명령이 적용되는 문장에 확장 가능 심벌을 표시하도록 하며, 상기 확장 명령은 상기 프로세서가 상기 확장 명령이 적용되는 문장의 하위 문장들이 표시되도록 하는 동시에 상기 확장 명령이 적용되는 문장에 축소 가능 심벌을 표시하도록 하며, 상기 모두 축소 명령은 상기 프로세서가 상기 모두 축소 명령이 적용되는 문장과 그 하위 문장들에 상기 축소 명령을 적용하도록 하며, 상기 모두 확장 명령은 상기 프로세서가 상기 모두 확장 명령이 적용되는 문장과 그 하위 문장들에 상기 확장 명령을 적용하도록 한다.
새로 수신된 문장이 속하는 레이아웃의 다른 문장들 중 일부 또는 전부가 축소 상태에 있을 경우, 상기 프로세서는 상기 레이아웃의 축소된 문장들 중 적어도 일부를 자동 확장한다.
상기 프로세서는 상기 수신된 문장에 직접 관련된 상위 문장들만을 자동 확장하고 레이아웃을 상위 문장 중의 하나가 축소되기 이전의 상태로 복원하는 MPS 자동 확장 명령을 수행한다.
이와 달리, 상기 프로세서는 상기 수신된 문장에 직접 관련된 상위 문장들만을 자동 확장하고 상기 수신된 문장과 동일한 깊이를 갖는 문장들을 축소하는 CD 자동 확장 명령을 수행한다.
이와 달리, 상기 프로세서는 상기 수신된 문장에 직접 관련된 상위 문장들만들 자동 확장하고 레이아웃의 다른 문장들을 축소하는 OB 자동 확장 명령을 수행한다.
이와 달리, 상기 프로세서는 상기 수신된 문장이 속하는 레이아웃의 모든 축소된 문장들을 확장하는 EA 자동 확장 명령을 수행한다.
한편, 상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 숨기기, 표시, 모두 숨기기 및 모두 표시 명령을 포함하며, 상기 숨기기 명령은 상기 프로세서가 상기 숨기기 명령이 적용되는 문장의 텍스트 박스 높이를 디폴트 높이로 조정하고 일부 텍스트 부분을 표시하지 않도록 하는 동시에 상기 숨기기 명령이 적용되는 문장에 표시 가능 심벌을 표시하도록 하며, 상기 표시 명령은 상기 프로세서가 상기 표시 명령이 적용되는 문장의 텍스트 박스 높이를 상기 디폴트 높이에서 원래의 높이로 조정하고 모든 텍스트 부분을 표시하도록 하는 동시에 상기 표시 명령이 적용되는 문장에 숨기기 가능 심벌을 표시하도록 하며, 상기 모두 숨기기 명령은 상기 프로세서가 상기 모두 숨기기 명령이 적용되는 문장 및 그 하위 문장들에 상기 숨기기 명령을 적용하도록 하며, 상기 모두 표시 명령은 상기 프로세서가 상기 모두 표시 명령이 적용되는 문장 및 그 하위 문장들에 상기 표시 명령을 적용하도록 한다.
상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 삭제 및 모두 삭제 명령을 포함하며, 상기 삭제 명령은 상기 프로세서가 상기 삭제 명령이 적용되는 문장의 텍스트를 삭제하도록 하며, 상기 삭제 명령은 상기 프로세서가 상기 삭제 명령이 적용되는 문장의 텍스트 박스를 디폴트 높이로 조정하여 표시하는 삭제 방법 1과, 상기 프로세서가 상기 삭제 명령이 적용되는 문장의 텍스트 박스를 삭제하는 삭제 방법 2 중의 하나를 실행하도록 하며, 상기 모두 삭제 명령은 상기 삭제 명령이 적용되는 문장 및 그 하위 문장들에 상기 삭제 명령을 적용하도록 하며, 상기 삭제 명령이 상기 삭제 방법 2를 실행하도록 한 경우, 삭제된 문장에 대한 응답 메시지를 수신한 상기 프로세서는 상기 삭제된 텍스트 박스를 다시 표시하거나 또는 상기 삭제된 텍스트 박스와 삭제된 문장을 함께 다시 표시한다.
상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 UBD 및 모두 UBD 명령을 포함하며, 상기 UBD 명령은 상기 프로세서가 상기 UBD 명령이 적용되는 문장의 텍스트를 삭제하는 동시에 상기 문장을 수신한 다른 사용자에게 해당 문장을 삭제하라는 요청 메시지를 송신하도록 하며, 상기 모두 UBD 명령은 상기 프로세서가 상기 UBD 명령이 적용되는 문장의 하위 문장들에 상기 UBD 명령을 적용하도록 한다.
상기 UBD 명령이 실행된 경우, 상기 프로세서는 상기 요청 메시지에 대한 상기 다른 사용자들의 응답을 상기 UBD 명령을 적용한 사용자에게 전달한다.
상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 수정 명령을 포함하며, 상기 수정 명령은 상기 프로세서가 상기 수정 명령이 적용되는 문장의 적어도 일부에 대한 수정을 허용하고, 상기 문장을 수신한 다른 사용자에게 해당 문장이 수정되었음을 알리는 메시지를 송신하도록 한다.
상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 반전 및 복귀 명령을 포함하며, 상기 반전 명령은 상기 반전 명령이 적용되는 레이아웃의 리프 문장만이 표시되도록 하는 동시에 상기 반전 명령이 적용되는 레이아웃에 복귀 가능 심벌을 표시하도록 하며, 상기 복귀 명령은 상기 복귀 명령이 적용되는 레이아웃의 문장들이 원래대로 표시되도록 하는 동시에 상기 복귀 명령이 적용되는 레이아웃에 반전 가능 심벌을 표시하도록 한다.
상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 증가 및 감소 명령을 포함하며, 상기 증가 명령은 상기 프로세서가 상기 증가 명령이 적용되는 문장의 폰트, 텍스트 박스 폭 및 텍스트 박스 크기를 증가하는 동시에 상기 증가 명령이 적용되는 문장에 감소 가능 심벌을 표시하도록 하며, 상기 감소 명령은 상기 프로세서가 상기 감소 명령이 적용되는 문장의 폰트, 텍스트 박스 폭 및 텍스트 박스 크기를 감소하는 동시에 상기 감소 명령이 적용되는 문장에 증가 가능 심벌을 표시하도록 한다.
본 발명은 응답자와 송신자(들) 사이에서 교신되거나 교환되는 메시지들을 터치스크린 디스플레이 상에 사용자 친화적으로 디스플레이 하기 위한 사용자 인터페이스를 제공한다.
본 발명에 따라 모든 메시지가 계층적 방식으로 조직화된 IM을 사용하여 사용자들이 서로 교신하는 경우에, 사용자들이 구조 자체 또는 그 구조 내에 표시되는 텍스트 메시지들을 부분적으로 수정하기를 원할 수 있다. 사용자들은 계층적 구조의 프레임워크 내에서 주의 깊게 설계된 명령 세트들(또는 명령 프로세스들)을 사용하여 그러한 부분적 수정을 할 수 있다. 특히, 텍스트 메시지들이 송신 또는 수신될 때마다 계층적 구조의 물리적 폭이나 높이가 조정될 경우에는, 여전히 상기 구조의 프레임워크 내에서 상기 명령 세트들이 동작한다는 점이 중요하다. 나아가, 논리적으로 동작하는 명령들뿐만 아니라 사용자들에 편리한 인터페이스를 제공하여 사용자들이 명령을 쉽게 사용할 수 있도록 하는 것도 중요하다. 다시 말해, 사용자에게 자유도를 부여해서 사용자들이 화면 상에서 쉽게 명령들을 이용할 수 있고, 필요에 따라 명령들이 숨거나 표시되도록 할 수 있고, 어떤 경우에는 간단한 손 제스처에 의해 명령들이 실행되도록 하는 방식으로 사용자들이 명령들을 설정할 수 있도록 한다.
본 발명의 상기 및 다른 목적들, 특징들 및 이점들은 첨부된 도면들과 관련하여 이루어지는 발명의 상세한 설명으로부터 보다 명확해질 것이다.
도 1은 본 발명의 적어도 하나의 예시적인 실시예에 따른 장치의 개략적인 블록도이다.
도 2는 본 발명의 적어도 하나의 예시적인 실시예에 따른 장치의 터치스크린의 개략적인 블록도이다.
도 3은 본 발명의 적어도 하나의 다른 예시적인 실시예에 따른 장치의 개략적인 블록도이다.
도 4는 본 발명의 적어도 하나의 예시적인 실시예에 따른 장치 상의 애플리케이션의 메뉴에 대한 사용자 인터페이스들을 도시하는 예시적인 도면이다.
도 5는 4인의 그룹이 인스턴트 메시지들을 교환하고 있는 상황을 나타내는 예시적인 도면이다.
도 6은 본 발명의 적어도 하나의 예시적인 실시예에 따른 메시징 디스플레이를 나타내는 예시적인 도면이다.
도 7a-7i는 본 발명의 이론적 근거를 설명하는 예시적인 도면들을 도시한다.
도 8a는 고유 식별자들을 갖는 레이아웃을 도시하는 예시적인 도면이다.
도 8b는 주 키(primary key)를 나타내는 예시적인 도면이다.
도 9a 및 9b는 GFAL(Generalized Fixed Angle Layout)이라고 하는 "템플릿"을 도시하는 예시적인 도면들로 구성된다.
도 10a 및 10b는 GVAL(Generalized Varying Angle Layout)이라고 하는 "템플릿"을 도시하는 예시적인 도면들로 구성된다.
도 11a 및 11b는 GMAL(Generalized Mixed Angle Layout)이라고 하는 "템플릿"을 도시하는 예시적인 도면들로 구성된다.
도 12a 및 12b는 SWL-LR(Same Width Layout - Left to Right) 및 SWL-RL(Same Width Layout - Right to Left) 을 도시하는 예시적인 도면들로 구성된다.
도 12c는 각각 FAL-R(Fixed Angles Layout - Right Aligned), VAL-R(Varying Angle Layout - Right Aligned) 및 MAL-R(Mixed Angle Layout - Right Aligned)을 도시하는 예시적인 도면들로 구성된다.
도 12d는 각각 Fixed Angle Layout - Center Aligned (FAL-C), Varying Angle Layout - Center Aligned (VAL-C), 및 Mixed Angle Layout - Center Aligned (MAL-C)를 도시하는 예시적인 도면들로 구성된다.
도 12e는 각각 Fixed Angles Layout - Left Aligned (FAL-L), Varying Angle Layout - Left Aligned (VAL-L), 및 Mixed Angle Layout - Left Aligned (MAL-L)을 도시하는 예시적인 도면들로 구성된다.
도 13a 및 13b는 레이아웃 내의 모든 텍스트 박스 폭들을 결정하기 위해 착신 또는 발신 텍스트 메시지(들)를 처리하는 방법을 도시하는 흐름도들로 구성된다.
도 14는 다양한 Reference Width Equations (RWEs) 및 Reference Depth Equations (RDEs)를 도시하는 표이다.
도 15a는 SWL-LR 하에서의 사용자들 간의 인스턴트 메시징을 도시하는 예시적인 도면들로 구성된다.
도 15b는 FAL-R 하에서의 사용자들 간의 인스턴트 메시징을 도시하는 예시적인 도면들로 구성된다.
도 15c는 고정 회전 포인트(fixed rotation point) VAL-R 하에서의 사용자들 간의 인스턴트 메시징을 도시하는 예시적인 도면들로 구성된다.
도 15d는 부동 회전 포인트(floating rotation point) VAL-R 하에서의 사용자들 간의 인스턴트 메시징을 도시하는 예시적인 도면들로 구성된다.
도 15e는 고정 회전 포인트(fixed rotation point) MAL-R 하에서의 사용자들 간의 인스턴트 메시징을 도시하는 예시적인 도면들로 구성된다.
도 16a는 세로 모드 및 가로 모드에서의 레이아웃들을 도시하는 예시적인 도면들로 구성된다.
도 16b 및 16c는 장치가 세로 모드에서 가로 모드로 회전할 때 모든 텍스트 박스 폭들을 재조정하는 방법을 도시하는 흐름도들로 구성된다.
도 17a는 레이아웃 모드를 선택하는 방법을 도시하는 흐름도로 구성된다.
도 17b는 관련 파라미터들(정보)을 갖는 텍스트 메시지를 송신하는 방법을 도시하는 흐름도로 구성된다.
도 17c는 검출된 텍스트 메시지로부터 관련 파라미터들을 추출하는 방법을 도시하는 흐름도로 구성된다.
도 18a는 내부화된 명령들의 개념을 도시하는 예시적인 도면들로 구성된다.
도 18b는 외부화된 명령들의 개념을 도시하는 예시적인 도면들로 구성된다.
도 18c는 맞춤화된 명령들의 개념을 도시하는 예시적인 도면으로 구성된다.
도 19는 사용자가 텍스트 메시지를 송신하고 그것이 어떻게 표시되는지를 나타내는 예시적인 도면들로 구성된다.
도 20a는 사용자가 기존의 텍스트 메시지에 응답하는 것을 나타내는 예시적인 도면들로 구성된다.
도 20b는 레이아웃을 그의 최대 용량으로 나타내는 예시적인 도면으로 구성된다.
도 20c는 사용자들 간의 인스턴트 메시징 상호작용들을 나타내는 예시적인 도면들로 구성된다.
도 21a-21d는 시간 만료 텍스트 메시지들을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 22a는 축소 명령(Collapse command)을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 22b 및 22c는 확장(Expand) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 22d는 모두 축소(Collapse All) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 22e는 모두 확장(Expand All) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 23a는 숨기기(Hide) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 23b는 표시(Show) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 23c는 모두 숨기기(Hide All) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 23d는 모두 표시(Show All) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 24a는 삭제(Delete) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 24b는 모두 삭제(Delete All) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 24c는 텍스트 메시지들이 삭제된 후에 사용자가 텍스트 메시지를 수신하는 것을 도시하는 예시적인 도면들로 구성된다.
도 25a 및 25b는 UBD 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 25c-25e는 모두 UBD(UBD All) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 26a-26b는 수정(Modify) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 27a는 반전(Invert) 및 복귀(Revert) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 27b는 레이아웃이 반전되고 복귀된 상태에 있은 후에 사용자가 텍스트 메시지를 수신하는 것을 도시하는 예시적인 도면들로 구성된다.
도 28은 증가(Increase) 및 감소(Decrease) 명령을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 29a는 ALL 명령들이 장치의 디스플레이 상에 어떻게 표시되는지를 도시하는 예시적인 도면으로 구성된다.
도 29b는 모두 축소, 모두 확장, 모두 숨기기 및 모두 표시 명령들을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 29c는 모두 삭제, 모두 UBD, 모두 반전 및 모두 복귀 명령들을 적용하는 방법을 도시하는 예시적인 도면들로 구성된다.
도 30a 및 30b는 이전 상태 자동 확장 유지(Maintain the Previous State Auto-Expand), 공통 깊이 자동 확장(Common Depth Auto-Expand), 일 분기 자동 확장(One Branch Auto-Expand) 및 모두 확장 자동 확장(Expand All Auto-Expand)의 개념을 나타내는 예시적인 도면들로 구성된다.
도 31a 및 31b는 사용자가 텍스트 메시지(들)를 송신/수신할 때마다 레이아웃들을 배치하는 2개의 상이한 방법을 도시하는 예시적인 도면들로 구성된다.
도 32a는 각각의 명령이 어떻게 제시될 수 있는지, 즉 내부화된 명령, 외부화된 명령, 맞춤화된 명령의 모든 가능한 조합들을 나타내는 표들로 구성된다.
도 32b는 사용자에 의해 설정 가능한 각 명령의 가능한 조합들을 도시한 표들로 구성된다.
도 32c는 내부에 표시되는 내부화된 명령들을 갖는 명령 표시 영역을 나타내는 예시적인 도면으로 구성된다. 또한, 외부화된 명령들은 심벌들을 사용하여 도시된다.
도 33a는 텍스트 폭 조정(TWA) 및 회전시 텍스트 폭 조정(TWA-R) 양자의 방법을 도시하는 흐름도들로 구성된다.
도 33b는 다른 사용자(들)에게 텍스트 메시지를 송신하는 방법을 도시하는 흐름도로 구성된다.
도 33c는 다른 사용자(들)로부터 텍스트 메시지(들)를 수신하는 방법을 도시하는 흐름도로 구성된다.
도 33d는 만료된 텍스트 메시지(들)을 삭제하는 방법을 도시하는 흐름도로 구성된다.
도 33e는 응답 명령의 방법을 도시하는 흐름도로 구성된다.
도 33f는 축소, 확장, 모두 축소 및 모두 확장 명령들의 방법들을 나타내는 흐름도들로 구성된다.
도 33g는 이전 상태 자동 확장 유지, 공통 깊이 자동 확장, 일 분기 자동 확장 및 모두 확장 자동 확장의 방법들을 나타내는 예시적인 흐름도들로 구성된다.
도 33h는 삭제 및 모두 삭제 명령들의 방법들을 도시하는 흐름도들로 구성된다.
도 33i는 숨기기, 표시, 모두 숨기기 및 모두 표시 명령들의 방법들을 도시하는 흐름도들로 구성된다.
도 33j는 UBD 및 모두 UBD 명령들의 방법들을 나타내는 흐름도들로 구성된다.
도 33k는 수정 명령의 방법들을 도시하는 흐름도로 구성된다.
도 33l은 반전 및 복귀 명령들의 방법들을 도시하는 흐름도들로 구성된다.
도 33m은 증가 및 감소 명령들의 방법들을 나타내는 흐름도들로 구성된다.
도 33n은 내부화된, 외부화된, 및 맞춤화된 명령들의 방법들을 도시하는 흐름도들로 구성된다.
이하, 첨부된 도면들을 참조하여 본 발명의 예시적인 실시예들을 설명한다.
본 발명은 교환된 메시지들 중 더 이른 선행 메시지(들)를 고려하여 인스턴트 메시지들을 다양한 계층 구조화 방식들로 조직화하고, 조직화된 인스턴트 메시지들을 터치스크린 디스플레이 상에 다양한 방식들로 표시하기 위한 사용자 인터페이스를 제공하기 위한 장치 및 방법에 관한 것이다. 개시되는 실시예들은 사용자들이 인스턴트 메시징 소프트웨어(또는 애플리케이션)로 수신 또는 송신된 메시지들에 응답할 수 있게 하고, 구조화되고 일관된 방식으로 인스턴트 메시지들을 관리할 수 있게 하는 터치스크린 디스플레이들을 갖는 다기능 장치들에 관한 것이다.
도 1은 본 발명의 적어도 하나의 예시적인 실시예에 따른 장치의 개략적인 블록도이다. 장치(100)는 유선 또는 무선 네트워크(들)를 통해 인스턴트 메시지들을 송수신하기 위한 사용자 장치를 지칭하며, 예를 들어 모바일 휴대용 단말기, 멀티미디어 플레이어 장치, 내비게이션 장치, 교육용 장치, 게이밍 시스템, 제어 장치, 개인용 컴퓨터(PC), 랩탑 컴퓨터, 태블릿 PC, 개인 휴대 단말기(PDA) 등에 대응한다. 그러나, 장치(100)는 이에 한정되지 않으며, 유선 또는 무선 네트워크(들)를 통해 인스턴트 메시지들을 송수신할 수 있는 모든 장치들을 포함할 수 있다. 장치(100)는 텍스트 메시지들, 이미지 및 비디오 메시지들을 입력하고, 다른 사용자들에게 송신되고 및/또는 그들로부터 수신된 메시지들을 표시하도록 구성된 터치 감지 디스플레이(102)(이하, 터치스크린 또는 터치스크린 디스플레이라고 함)를 포함한다. 터치 감지 디스플레이(102)는 사용자의 모션들, 및 예를 들어 사용자의 손가락(들) 또는 스타일러스 펜에 의해 개시된 접촉(들)을 감지 및/또는 검출하기 위한 입력 패널을 갖춘 "터치스크린" 또는 "터치 감지 디스플레이 시스템"을 지칭한다. 장치(100)는 또한 메모리(104)(하나 이상의 비휘발성 컴퓨터 판독 가능 저장 매체를 포함할 수 있음), 메모리 제어기(106), 하나 이상의 프로세서(예를 들어, 마이크로프로세서 또는 CPU)(108), 주변 장치 인터페이스(110), RF 회로(112), 오디오 회로(114), 스피커(116), 마이크로폰(118), 근접 센서(120) 및 가속도계(122)를 포함한다. 장치(100)는 입/출력(I/O) 서브시스템(124), 다른 입력 또는 제어 장치들(126), 외부 포트(128) 및 하나 이상의 광 센서(도시되지 않음)를 포함한다. 이들 컴포넌트는 하나 이상의 통신 버스 또는 신호 라인(양방향 화살표로 표시됨)을 통해 통신한다. 장치(100)는 휴대용 다기능 장치의 예시적인 실시예이고, 장치는 도 1에 도시된 것보다 많거나 적은 컴포넌트로 구현되거나, 2개 이상의 컴포넌트를 결합하거나, 상이한 구성 또는 배열의 컴포넌트들로 구현된다. 도 1에 도시된 다양한 컴포넌트들은 하나 이상의 신호 처리 프로세서 및/또는 회로를 포함하는 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어 양자의 조합으로 구현된다. 장치(100)의 각각의 컴포넌트는 하나 이상의 프로세서 및/또는 주문형 집적 회로(ASIC)에 의해 구현되어 이하에 설명하는 특정 기능들을 수행한다.
도 2는 본 발명의 적어도 하나의 예시적인 실시예에 따른 다기능 장치의 터치스크린의 개략적인 블록도이다. 도 2를 참조하면, 터치스크린(102)은 장치(200)(즉, 도 1의 장치(100)와 동일한 장치)의 사용자 인터페이스(UI) 내에 하나 이상의 그래픽 및/또는 텍스트를 표시한다. 일부 실시예들은 물론, 후술하는 다른 실시예들에서, 사용자는 예를 들어 하나 이상의 손가락의 터치들(202)로 그래픽들과 접촉하거나 터치함으로써 미리 정의된 기능들과 관련된 하나 이상의 그래픽을 선택한다. 일부 실시예들에서, 사용자가 하나 이상의 그래픽과의 접촉을 끊을 때 하나 이상의 그래픽의 선택이 발생한다. 일부 실시예들에서, 다양한 타입의 접촉은 예를 들어 장치(200)의 터치스크린(102)(또는 다양한 모션들을 검출하기 위한 카메라 센서(도면들에 도시되지 않음))과 접촉을 행하는 손가락의 하나 이상의 탭, 하나 이상의 스와이프(좌에서 우로, 우에서 좌로, 위로 그리고/또는 아래로) 및/또는 롤링(우에서 좌로, 좌에서 우로, 위로 그리고/또는 아래로)과 같은 제스처를 포함한다. 일부 실시예들에서, 그래픽과의 우연한 접촉은 그래픽을 선택하지 않는다. 예를 들어, 애플리케이션 아이콘 위를 스와이핑하는 스와이프 제스처는 선택에 대응하는 제스처가 탭일 때 대응하는 애플리케이션을 선택하지 않는다.
장치(200)는 또한 "홈" 또는 메뉴 버튼(204) 및 제어 버튼(들)(206)과 같은 하나 이상의 물리적 버튼을 포함한다. 메뉴 버튼(204) 또는 제어 버튼(들)(206)은 메모리(104) 내에 로딩되고 그로부터 검색되고 장치(200) 상에서 실행되는 애플리케이션들의 세트 내의 임의의 애플리케이션을 내비게이션하는 데 사용된다. 이와 달리, 일부 실시예들에서는, 메뉴 버튼(204)이 물리적 버튼 대신 또는 추가로 터치스크린(102) 내의 그래픽 사용자 인터페이스(GUI) 내에 구현된 소프트 키로서 구현된다.
일 실시예에서, 장치(200)는 터치스크린(102), 메뉴 버튼(204), 제어 버튼(206), 장치를 파워 온/오프하고 장치를 잠그기 위한 푸시 버튼(208), 볼륨 조정 버튼(들)(210), 가입자 식별 모듈(SIM) 카드 슬롯(212), 헤드셋 잭(214), 외부 메모리 카드 슬롯(216) 및 도킹/충전 외부 포트(218)를 포함한다. 푸시 버튼(208)은 버튼을 누르고, 버튼을 누른 상태로 미리 정의된 시간 간격 동안 유지함으로써 장치 상에서 파워를 턴 온/오프하고; 버튼을 누르고, 미리 정의된 시간 간격이 경과하기 전에 버튼을 해제함으로써 장치를 잠그고/잠그거나; 장치의 잠금을 해제하거나 잠금 해제 프로세스를 시작하는 데 사용된다. 다른 실시예에서, 장치(100)는 마이크로폰(118)을 통해 일부 기능들의 활성화 또는 비활성화를 위한 구두 입력을 검출한다.
도 3은 본 발명의 적어도 하나의 다른 예시적인 실시예에 따른 장치의 개략적인 블록도이다. 도 3을 참조하면, 일부 실시예들에서, 장치(200)는 하나 이상의 프로세서(CPU)(300) 및 하나 이상의 네트워크 또는 다른 통신 인터페이스(302)를 포함한다. 장치(200)는 메모리(304)를 포함한다. 메모리는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 장치들과 같은 고속 랜덤 액세스 메모리를 포함하며; 하나 이상의 자기 디스크 저장 장치, 광 디스크 저장 장치, 플래시 메모리 장치 또는 다른 비휘발성 고체 상태 저장 장치와 같은 비휘발성 메모리를 포함한다. 장치(200)는 일부 실시예들에서 터치스크린 디스플레이(102)인 디스플레이, 키보드 및/또는 마우스(또는 다른 포인팅 장치) 및 터치 패드로 구성된 입출력(I/O) 인터페이스(306)를 포함한다. 다기능 장치(200)에는 이들 컴포넌트를 상호 접속하기 위한 하나 이상의 통신 버스(308)가 존재한다. 통신 버스(308)는 시스템 컴포넌트들을 상호접속하고 이들 간의 통신을 제어하는 회로(때때로 칩셋이라고 함)를 포함한다.
도 4는 본 발명의 적어도 하나의 예시적인 실시예에 따른 장치 상의 애플리케이션들의 메뉴에 대한 사용자 인터페이스들을 도시하는 예시적인 도면이다. 사용자 인터페이스 실시예들과 유사하게, 사용자 인터페이스(400)는 다음의 요소들: 셀룰러 및 와이파이 신호들과 같은 무선 통신(들)을 위한 신호 강도 지시기(402), 시간(404), 배터리 상태 지시기(406), 및 장치와 관련된 다른 정보 또는 주식 시세 및 날씨와 같은 장치 또는 사용자 맞춤 정보, 또는 이들의 서브세트(또는 부분집합) 또는 수퍼세트(또는 상위집합)를 포함한다.
인터페이스(400)는 예를 들어 설정들(장치의 일반 설정), 사진들, 교통 정보, 수학 공식들, 게임들, 계산기들, 사전, 영화들, 메일, 카메라 등과 같은 애플리케이션들에 대한 아이콘들을 포함한다. 인터페이스(400)는 예를 들어 지정된 영역의 일기 예보 및 사용자에게 주식 시세 및 뉴스를 제공하는 주식 시장 정보 위젯과 같은 위젯들을 포함한다.
인터페이스(400)는 또한 예를 들어 전화, 텍스트, 인터넷 브라우저, 뮤직 플레이어 및 통화 변환기와 같은 다수의 자주 사용되는 아이콘들을 하이라이트하거나 그룹화한다.
도 5는 4인의 그룹(500; 나, 수퍼맨, 배트맨, 스파이더맨)이 인스턴트 메시지들(또는 텍스트 메시지들)을 교환하는 것을 도시하는 예시적인 도면이다. 동일한 세션에서 4명의 멤버 사이에서 인스턴트 메시지들을 교환하는 상황에서, 도 5에 도시된 바와 같이 텍스트 메시지들을 표시하는 방식은 수신자(들)(사용자(들))로 하여금 텍스트 메시지들을 구별(식별, 조직화 또는 분류)하게 하며, 어느 텍스트 메시지가 누구에게 가는지가 명확하지 않을 경우에는 양 당사자 인스턴트 메시징보다 훨씬 혼란스러울 수 있는데, 이는 도 5에 표시된 일반적인 방식에서는 텍스트 메시지들 각각이 누구에게서 시작되는지를 식별하거나 추적하기 위해 수신자(들)가 소정의 노력을 기울여야 하기 때문이다. 혼란을 피하기 위해, 사용자들은 예를 들어 미리 정의된 식별 또는 심벌(식별자 또는 연산자)(예를 들어, @ + 타겟 수신자)을 추가함으로써 그들이 누구에게 응답하고 있는지를 표시한다. 예를 들어, 도면부호 502, 504 및 506에서, 사용자들은 그들이 누구에게 응답하고 있는지를 나타내기 위해 오퍼레이터 심벌 @(at) 기호(즉, 특정 텍스트 메시지에 대한 타겟 수신자를 지정하는 연산자의 심벌)를 사용했다. 이것은 그룹의 멤버들로부터의 각각의 텍스트 메시지마다 오퍼레이터 심벌(즉, @) 및 타겟 수신자를 입력하기 위해 불필요한 시간을 필요로 하고 사용자들을 귀찮게 하기 때문에 사용자들에게 불편하며, 이러한 도 5의 시스템은 응답자들 및 수신자들에게 불필요한 정신적 부담을 준다.
도 6은 본 발명의 적어도 하나의 예시적인 실시예에 따른 메시징 디스플레이를 나타내는 예시적인 도면이다. 도 6에 도시된 바와 같이, 임의의 텍스트 메시지의 응답은 응답 텍스트 메시지를 사용자가 응답하고자 하는 대응하는 텍스트 메시지 아래에 배치함으로써 계층 구조로 표시된다. 텍스트 메시지의 응답은 들여쓰기와 함께 "타겟" 텍스트 메시지(예컨대, 도 6의 "Blue crab tonight? Anybody up for it?"의 발신 텍스트 메시지) 아래에 배치된다. 따라서, 동일한 양의 들여쓰기를 갖는 타겟 텍스트 메시지 아래의 모든 텍스트 메시지들은 타겟 텍스트 메시지에 대해 가장 관련된 응답들(즉, 타겟 텍스트 메시지(600)에 직접 의존하는 응답들(602, 604, 606 및 608))로서 그룹화된다. 예를 들어, 제1 텍스트 메시지(600)는 송신자(즉, 나; 아이언맨)로부터 개시된 발신 메시지이다. 텍스트 메시지들(602, 604, 606 및 608)은 모두 제1 텍스트 메시지(600)에 대한 응답들이고, 그에 직접 의존한다. 4개의 응답(즉, 텍스트 메시지들(602, 604, 606 및 608)은 제1 텍스트 메시지(600)와 직접 관련된다. 사용자는 4개의 텍스트 메시지가 텍스트 메시지(600)와 관련된 응답들임을 식별하는데, 이는 그들이 제1 텍스트 메시지(600)의 위치로부터 배열된 동일한 양의 들여쓰기들과 함께 텍스트 메시지(600) 아래 배치되기 때문이다. 또한, 사용자(즉, 나: 아이언맨)는 텍스트 메시지들(610, 612)이 텍스트 메시지(604)와 직접 관련된 응답들이며, 텍스트 메시지(600)와 관련되지도 그로부터 유래하지도 않는다는 것을 식별할 수 있다. 다시, 2개의 응답(610, 612)은 그와 같이 식별되는데, 이는 이 2개가 타겟 텍스트 메시지(604)의 위치로부터 배열된 동일한 양의 들여쓰기와 함께 타겟 텍스트 메시지(604) 아래 배치되기 때문이다.
따라서, 본 발명은 사용자의 교신을 구조화되고 조직화된 방식으로 제시하는 IM 표시 방법을 제공한다. 본 발명은 장치(100)에 대한 상기 제시와 터치스크린 디스플레이(102)를 통합하는 (기술적인 의미에서) 체계적으로 최적화된 방식을 제공한다.
사용자들의 그룹이 이미 존재하는 텍스트 메시지(들)에 응답할 수 있고, 교신이 계층적 방식으로 가시적으로 조직화되는 경우에, 이러한 시스템을 응답 메시징 시스템(RMS)이라고 부르기로 한다.
이하, 도 7a-7i에서, RMS의 아이디어 및 이론적 근거가 설명된다.
공지된 IM에서, 사용자의 텍스트 메시지들을 포함하는 텍스트 박스들의 크기는 텍스트 메시지가 짧을수록 텍스트 박스가 더 작고, 텍스트 메시지가 길수록 텍스트 박스가 더 크다는 점에서 최적화된다. 사용자들이 서로 송신하는 텍스트 메시지들은 분명히 무작위 길이들을 가지므로, 이러한 텍스트 메시지들은 상이한 크기의 텍스트 박스들 내에 표시된다. 이러한 특징이 존재하지 않는 경우에는, 모든 사용자들의 텍스트 메시지들은 그들의 텍스트 메시지들의 길이들에 관계없이 텍스트 박스 크기에서 동일한 폭을 각각 갖는 텍스트 박스들 내에 배치된다.
도 7a에 도시된 바와 같이, 장치(200)가 비교적 짧은 텍스트 메시지(예를 들어, 텍스트 메시지(700))를 표시할 때, 텍스트 메시지를 "감싸는" 텍스트 박스의 폭도 비교적 더 짧다. 장치(200)가 더 긴 텍스트 메시지(702)를 표시할 때, 텍스트 메시지를 감싸는 텍스트 박스의 폭도 증가한다. 또한, 텍스트 메시지가 소정 폭보다 길 경우 또는 길 때, 장치(200)는 텍스트 메시지를 다수의 (텍스트) 라인으로 분할하며, 텍스트 메시지(704) 및 텍스트 박스(706)의 폭은 일정하게 유지된다.
이제, 장치가 텍스트 박스들의 폭들을 그들의 관련성에 따라 조정하는 어떠한 메커니즘도 없이 구조화 방식으로 모든 텍스트 메시지들을 단순히 조직화하는 경우 또는 조직화할 때, 텍스트 메시지들은 도 7b에 예시적으로 표시된다. 도 7b에서, 모든 텍스트 메시지들은 구조화 방식으로 조직화되지만, 텍스트 박스들의 폭들은 임의적이고, 사용자들에게 양호한 판독성을 제공하지 못하며, 텍스트 박스들의 배치들은 무질서하게 보인다. 판독성을 높이고 조직화하기 위해, 모든 텍스트 박스들의 폭들은 도 7c에 도시된 바와 같이 조정된다.
도 7c의 텍스트 메시지들의 수집은 사용자들의 교신의 최종 결과이다. 그러나 이것은 각각의 인스턴트 메시지(IM)가 어떻게 진행했는지를 나타내지 않는다.
도 7d는 이 포인트를 도시하는 동시에 RMS의 기본 특성을 도시한다. 도 7d의 ①에서, 사용자는 텍스트 메시지("ABC")를 수신한다. 도시된 바와 같이, 텍스트 박스는 텍스트를 "감싸며", 텍스트 박스의 폭은 텍스트 "ABC"의 실제 길이에 가깝다. 도 7d의 ②에서, 사용자는 제1 텍스트 메시지에 응답하는 더 긴 텍스트 메시지("ABCDE")를 수신한다. 제1 텍스트 메시지("ABC")의 텍스트 박스의 폭은 미리 정의된 특정 외관을 형성하도록 조정되었다는 점에 유의한다. 도 7d의 ③에서, 사용자는 제1 텍스트 메시지에 대한 다른 응답 텍스트 메시지("EDCBA")를 수신한다. 텍스트 메시지는 첫 번째 것에 대한 응답이기 때문에 제1 응답 아래에 배치된다. 도 7d의 ④에서, 사용자는 다른 더 긴 텍스트 메시지("ABCDEFGHIJKLMN")를 수신하며, 처음 3개의 텍스트 메시지의 텍스트 박스들의 폭들은 특정 외관을 형성하도록 조정되었다. 또한, 수신된 텍스트 메시지("ABCDEFGHIJKLMN")는 두 번째 것("ABCDEF")에 대한 응답이며, 그에 직접 의존한다. 도 7d의 ⑤에서, 최종 텍스트 메시지(즉, "ABCDEFGHIJKLMN")는 장치(또는 시스템)로부터 삭제되었다. 처음 2개의 텍스트 메시지의 텍스트 박스들의 폭들은 나머지 텍스트 박스들 중에서 텍스트 박스의 가장 긴 폭을 갖는 텍스트 박스의 폭과 같도록 조정(감소)되었다는 점에 유의한다.
도 7d는 RMS에서 텍스트 박스들의 폭들이 착신/발신 텍스트 메시지들의 텍스트 길이뿐만 아니라 임의의 기존 텍스트 메시지(들)의 삭제에 따라 변하는 것을 도시한다. 발신 또는 착신 텍스트 메시지의 길이는 임의적이기 때문에, 사용자가 텍스트 메시지를 송신/수신할 때마다 각각의 텍스트 박스에 대한 "우측" 텍스트 박스 폭을 계산하여 채팅 세션에서 현재 제시되는 메시지들을 검출하고 분석하는 절차가 수행된다(텍스트 메시지, 예를 들어 "ABC"의 길이는 임의의 양의 실수일 수 있으며, 단위는 픽셀, 문자 수, 밀리미터, 센티미터, 인치 등일 수 있다는 점에 유의한다). 따라서, RMS에서는, 사용자가 텍스트 메시지를 송신 또는 수신할 때마다, 장치(200)가 채팅 세션에 현재 참여하고 있는 다른 사용자들에게 송신하였거나 그들로부터 수신한 채팅 세션 동안의 모든 메시지들의 길이들을 사용하는 규칙들의 세트에 의해 모든 텍스트 박스들의 폭들이 조정된다. 또한, 텍스트 박스들의 폭들의 변경들은 사전 정의된 규칙들에 기초하여 수행되므로 텍스트 메시지들의 수집은 특정 외관을 갖도록 형성된다.
RMS에서, 극단적인 상황을 피하도록 텍스트 박스들의 폭들이 계산된다. 도 7e에 도시된 바와 같이, 텍스트 박스들 내의 공간들은 지나치게 중복된다. 반면, 도 7f에 도시된 바와 같이, 텍스트 박스들 내의 공간들은 지나치게 불충분하여, 사용자에게 "억눌리는" 느낌을 준다. 따라서, 텍스트 박스들의 폭들을 결정하는 절차(또는 절차들의 세트)는 중복 공간들과 불충분한 공간들 간의 균형을 유지하여 판독성과 조직화를 향상시키는 것을 목표로 한다.
현실적으로, 텍스트 박스들의 폭들은 장치(200)에 대한 물리적 한계가 있기 때문에 무한히 증가할 수 없다. 또한, 그들은 폭들이 0에 도달하는 포인트까지 감소할 수 없다. 따라서, 텍스트 박스의 최대 폭 및 최소 폭이 정의되며, 그들을 최대 폭들(max-widths) 및 최소 폭들(min-widths)이라고 한다. 텍스트 박스들의 폭들이 조정될 때, 미리 정의된 최대 폭들 및 미리 정의된 최소 폭들 내에서 각각의 텍스트 박스의 폭이 조정된다.
도 7g는 모든 텍스트 박스들의 폭들이 Mk d(k,d=0,1,2,...)로 표시되는 그들의 최대 폭들에 도달한 것을 도시한다.
도 7h는 모든 텍스트 박스들의 폭들이 mk d(k,d=0,1,2,...)로 표시되는 그들의 최소 폭들에 도달한 것을 도시한다. 최대 폭 및 최소 폭이 일반적으로 언급될 때는, 위첨자 d는 버려지고 Mk 및 mk로 표시된다. 최대 폭 및 최소 폭의 상세는 아래에서 설명된다.
도 7i는 도 7c에 도시된 IM에서 사용자들(즉, 도 7i의 사용자 A 내지 사용자 D)이 어떻게 교신했는지에 대한 예시적인 방법을 도시한다. 도 7i의 ①에서, 사용자, 즉 사용자 B는 사용자 A로부터 텍스트 메시지(710, 음영 텍스트 박스)를 수신한다. 도 7i의 ②에서, 사용자 B는 수신된 텍스트 메시지(710)(음영 텍스트 박스)에 응답하여 메시지(712)를 사용자 A에게 송신한다. 장치(200)는 텍스트 메시지(710) 및 수신된 메시지(712) 양자를 분석하고, 양 텍스트 박스의 폭들을 결정한다. 도시된 바와 같이, 사용자 A의 텍스트 메시지(710)의 텍스트 박스 폭은 수신된 메시지(712)의 폭에 따라 사전 정의된 폭을 갖도록 조정된다. 그리고 응답 텍스트 메시지(712)는 사용자 A의 텍스트 메시지(710) 아래에 배치된다. 도 7i의 ②에서 응답 텍스트 메시지(712)의 폭은 메시지 박스(즉, "Hi!")의 폭보다 작고, 양 텍스트 박스의 우측들은 정렬된다는 점에 유의한다. 도 7i의 ③에서, 사용자 B는 사용자 C로부터 텍스트 메시지(714, 음영 텍스트 박스)를 수신한다. 도시된 바와 같이, 사용자 A(710) 및 사용자 B(712)의 텍스트 메시지들의 텍스트 박스 폭은 증가하였고, 사용자 A의 텍스트 메시지에 대한 응답인 사용자 C의 텍스트 메시지(714)는 사용자 B의 텍스트 메시지(712) 아래에 배치된다. 도 7i의 ④에서, 사용자 B는 사용자 D로부터 텍스트 메시지(716, 음영 텍스트 박스)를 수신한다. 메시지(716)의 폭은 그 위에 배치된 메시지들(즉, "Hey, how are you doing?" 및 "I heard you went Washington DC. Did you like it?")과 동일하며, 이것은 텍스트 메시지들(712, 714 및 716)이 메시지(710)에 직접 응답하는 응답 텍스트 메시지들이라는 것을 나타낸다. 즉, 3개의 텍스트 메시지(712, 714 및 716) 모두는 제1 텍스트 메시지(즉, 메시지(710))와 직접 관련된다. 도 7i의 ⑤에서, 사용자 B는 사용자 A로부터 텍스트 메시지(712)의 응답인 텍스트 메시지(718, 음영 텍스트 박스)를 수신한다. 도 7i의 ⑥에서, 사용자 C는 사용자 A로부터 텍스트 메시지(714)의 응답인 텍스트 메시지(720, 음영 텍스트 박스)를 수신한다. 2개의 텍스트 메시지(718 및 720)는 그들의 "부모" 텍스트 메시지들에 비해 폭이 더 작고, 제1 텍스트 메시지보다 훨씬 작다는 점에 유의한다. 이것은 응답들의 상이한 "깊이들", 즉 계층적 관련성을 나타낸다. 도 7i의 ⑦에서, 사용자 A는 사용자 B로부터 텍스트 메시지(718)에 직접 응답하는 응답인 텍스트 메시지(722, 음영 텍스트 박스)를 수신한다. 도 7의 ⑧에서, 사용자 B는 사용자 A로부터 텍스트 메시지(722)에 직접 응답하는 응답인 텍스트 메시지(724, 음영 텍스트 박스)를 수신한다.
지금까지의 전반적인 설명은 사용자들이 텍스트 메시지들을 서로 송신/수신하는 상황에서 장치(200)가 착신 또는 발신 텍스트 메시지(들)를 검출할 때 발생하는 단일 이벤트마다 텍스트 박스들의 폭들을 어떻게 조정하는지를 설명하였다. 그러나, 장치(200)가 텍스트 메시지(즉, 장치(200)로부터의 발신 메시지 또는 장치(200)로의 착신 메시지 각각)를 식별하여 그의 올바른 위치에 배치하는 방법에 대한 핵심 아이디어는 설명되지 않았다. 핵심 아이디어는 제1 텍스트 메시지에 고유 식별자를 할당하고 제1 텍스트 메시지에 대한 임의의 응답들에 자연수들을 할당하는 것이다.
텍스트 메시지들의 그룹이 구조화되는 경우 또는 구조화될 때, 고유 숫자들이 각각의 텍스트 메시지에 할당된다. 제어기(106)는 각각의 메시지를 식별하기 위한 식별자(예를 들면, 숫자, 문자 또는 이들의 조합)를 생성하며, 숫자는 도 8a에 도시된 바와 같이 각각의 텍스트 메시지를 식별한다(식별자들은 내부적으로 할당되고 사용자들에게는 보이지 않는다는 점에 유의한다). 예를 들어, 제1 박스는 "x. 문장"("x. statement"), 문장 x(statement x) 또는 주 문장(main statement)을 나타낸다. "문장"이라는 용어는 각각 대응하는 텍스트 박스에 표시된 대응하는 텍스트 메시지에 대응한다. 여기서, 문장이라는 용어는 텍스트 메시지(이하, 단지 설명의 편의상 텍스트라고 함) 및 텍스트 박스를 포함한다. 도 8a의 각각의 문장은 대응하는 텍스트 및 대응하는 텍스트를 감싸는 텍스트 박스로 구성된다.
문장들의 그룹이 계층적 구조로 함께 그룹화되고, 각각의 문장에 식별자가 할당될 때, 그러한 문장들의 그룹을 레이아웃이라고 한다. 도 8a의 문장들의 그룹은 레이아웃으로 지칭된다.
도 8a에 도시된 레이아웃에서, 레이아웃은 주 문장 및 주 문장에 직접 또는 간접적으로 응답하는 응답들인 그의 관련된 자식(또는 하위) 문장들로 구성된다. 추가로 또는 대안으로, 제어기(106)는 w, x, y 및 z와 같은 상이한 식별자들을 지정하여 레이아웃의 각각의 주 문장을 각각 나타냄으로써 터치스크린(102) 상에 표시될 하나 이상의 다른 레이아웃을 생성할 수 있다.
주 문장의 자식 문장들은 문장 x.1, x.2 및 x.3이다. 문장 x.3은 자식 문장을 갖지 않으며, 문장 x.2는 하나의 자식 문장(문장 x.2.1)을 갖는다. 문장 x.1의 자식 문장은 문장 x.1.1이고, 문장 x.1.1의 자식 문장은 문장 x.1.1.1이고, 기타 등등이다. 그러나, 문장 x.1.1은 문장 x의 자식 문장이 아니다.
이와 달리, 문장 x.1, x.2 및 x.3의 부모 문장은 주 문장(문장 x)이다. 따라서, 문장 x.1.1의 부모 문장은 문장 x.1이며, 문장 x.1.1.1의 부모 문장은 문장 x.1.1이고, 기타 등등이다. 그러나, 문장 x는 문장 x.1.1의 부모 문장이 아니다.
주 문장을 제외한 임의의 문장들은 하위 문장으로 지칭된다. 문장 x.1.1, x.1.1.1 및 x.1.1.1.1은 문장 x.1의 하위 문장들이다. 문장 x.1.1도 문장 x.1의 자식 문장이라는 점에 유의한다. 문장 x.2는 하나의 하위 문장이자 자식 문장인 문장 x.2.1을 갖는다.
이와 달리, 문장 x, x.1, x.1.1, x.1.1.1은 문장 x.1.1.1.1의 상위 문장들이다. 문장 x.1.1.1은 또한 문장 x.1.1.1.1의 부모 문장이라는 점에 유의한다. 문장 x.2.1의 상위 문장은 문장 x 및 x.2이다. 문장 x.3의 상위 문장은 문장 x이다.
문장 x.1.1.1.1, x.2.1 및 x.3과 같이 어떠한 자식 문장도 없는 문장을 리프(leaf) 문장이라고 한다. 즉, 리프 문장들은 계층적 구조 내의 말단 문장들을 나타내며, 이들은 각 말단 문장의 개시 문장에서 유래한다. 리프 문장들은 문장들의 각 문장 분기(또는 브랜치)의 말단 문장들을 나타낸다. 예를 들어, 문장 x.1.1.1.1은 문장 x에서 유래하고 그로부터 개시되는 리프 문장이다. 문장 x.2.1은 문장 x.2 및 문장 x에서 유래하고 그로부터 개시되는 리프 문장이며, 문장 x.3은 문장 x에서 유래하고 그로부터 개시되는 리프 문장이다.
레이아웃에는 3개의 분기가 있다. 문장 x, x.1, x.1.1, x.1.1.1 및 x.1.1.1.1은 도 8a의 레이아웃의 제1 분기를 형성한다. 문장 x, x.2 및 x.2.1은 도 8a의 레이아웃의 제2 분기를 형성한다. 문장 x 및 x.3은 도 8a의 레이아웃의 제3 분기를 형성한다.
물리적으로, 자식 문장은 그의 부모 문장으로부터 유래되는 미리 정의된 들여쓰기와 함께 배치되고 배열된다. 착신 및 발신 문장들 간의 그들의 계층적 상관관계들을 표시하기 위해 텍스트 박스들을 연결하여 이러한 들여쓰기를 강조하도록 구성된 도면 내의 수직 및 수평 라인들은 들여쓰기 라인들이라고 한다.
모든 문장들은 설명의 편의를 위해 본 출원에서 정의된 깊이를 갖는다. 즉, 문장의 깊이는 문장이 그의 부모 문장 및 주 문장의 미리 정의된 정렬로부터 얼마나 많이 떨어져 배치되고 배열되는지의 들여쓰기를 나타낸다. 예를 들어, 주 문장(또는 문장 x)이 깊이 0에 있다고 가정하면, 문장 x.1, x.2 및 x.3은 예를 들어 도 8a의 레이아웃에서 주 문장이 표시되고 배열되는 위치(또는 가상 정렬)로부터 깊이 1에 있다. 문장 x.1.1 및 x.2.1은 예를 들어 도 8a의 레이아웃에서 주 문장이 표시되고 배열되는 위치(또는 가상 정렬)로부터 깊이 2에 있다. 문장 x.1.1.1은 깊이 3에 있고, 문장 x.1.1.1.1은 최저 깊이인 깊이 4에 있다. 숫자가 높을수록 깊이가 더 낮고, 숫자가 낮을수록 깊이가 더 높다는 점에 유의한다. 따라서, 주 문장은 최고 깊이에 있는 반면, 문장 x.1.1.1.1은 최저 깊이에 있다.
최저 깊이는 문자 d로 표시된다. 깊이 d에 대한 한계가 있음에 유의한다. 이 한계는 D, 0≤d≤D로 표시된다. 예를 들어, 도 8a의 레이아웃에서 허용되는 최저 깊이가 4(D=4)로 설정될 때, 문장 x.1.1.1.1은 가장 낮은 가능한 깊이에 있고, 사용자는 문장, x.1.1.1.1에 응답하거나 그로부터 유래하는 응답을 더 행하는 것이 허용되지 않는다.
부모 문장으로부터 유래하는 자식 문장들의 수에 대한 한계(또는 제한)는 함수 M(·)으로 표현된다. 예를 들어, 어떤 레이아웃에서, 허용되는 최저 깊이의 문장이 4(D=4)인 경우, 그리고 임의의 문장이 "x.a1.a2.a3.a4"로 표현될 수 있다면, 한계는 다음과 같이 표현될 수 있다.
D=4인 경우, M(x)=4, M(a1)=3, M(a2)=5, M(a3)=2, M(a4)=0
이것(M(x)=4)은 주 문장이 최대 4개의 자식 문장을 가질 수 있고, 깊이 1의 임의의 문장이 최대 3개의 자식 문장을 가질 수 있고, 깊이 2의 임의의 문장이 최대 5개의 자식 문장을 가질 수 있고, 깊이 3의 임의의 문장이 최대 2개의 자식 문장을 가질 수 있다는 것을 의미한다. 허용되는 최저 깊이는 4(D=4)이므로, 깊이 4의 임의의 문장은 어떠한 자식 문장도 가질 수 없고, 따라서 M(a4)=0이라는 점에 유의한다.
설명되는 바와 같이, 각각의 문장에는 고유 식별자, 예를 들어 문장 x.2.1이 할당된다. 양의 정수가 점과 함께 각각의 문장에 순차적으로 할당된다는 점에 유의한다. 예를 들어, 문장이 자식 문장을 가질 때, 제1 자식 문장에 숫자 ".1"이 첨부되고, 제2 자식 문장에 ".2"가 첨부되고, 기타 등등이다. 각각의 문장은 다른 문장들과 구별할 수 있는 고유하고 독립적인 숫자를 갖는다. 숫자들 자체는 물론, 숫자를 식별자에 첨부하는 액션을 넘버링이라고 한다. 주 문장의 넘버링은 0인 것으로 가정한다. 즉, 내부적으로, 주 문장은 문장 x.0이다. 주 문장의 자식 문장들(문장 x.1, x.2 및 x.3)의 넘버링들은 1, 2 및 3이다. 문장 x.1.1.1.1의 넘버링은 1.1.1.1이다.
요컨대, 도 8a의 레이아웃에서는, 주 문장에 대한 7개의 자식 문장, 레이아웃 내의 3개의 분기, 및 3개의 리프 문장이 있다. 또한, 현재 최저 깊이 4의 문장은 문장 x.1.1.1.1이며, 허용되는 최저 깊이는 D이고, 함수 M(·)은 x.a1...ak(0≤k≤D)에 대해 정의된다. 마지막으로, 각각의 문장의 넘버링은 고유하게 할당된다.
문자 "x"는 시스템에서 중요한 역할을 한다. 이 문자는 내부적으로 주 문장을 고유하게 식별하는 역할을 한다. 사용자의 장치(예를 들어, 장치(200))가 응답 문장을 다른 사용자들의 장치로 송신하거나 그로부터 수신할 때, 수신 측 장치는 착신 문장을 식별하고, 대응하는 IM "포럼들" 또는 "그룹들"(예를 들어, 활성 채팅 세션들)에 수신된 단일 문장을 위치시켜서 해당 단일 문장이 여러 IM "포럼들" 또는 "그룹들" 중에 속하게 한다. 그뿐만 아니라, "큰" 위치가 식별되면, 장치(200)는 레이아웃에서 올바른 위치를 찾기 위해 위치를 결정한다. 따라서, 문자 x는 식별자의 역할을 하며, 장치(200)는 넘버링을 이용해 그의 올바른 위치를 정확하게 찾을 수 있다. 문자 x는 예시적으로 사용자 ID, 주 문장의 생성 시간(바람직하게 밀리초 아래) 및 넘버링의 조합으로 구현된다.
도 8b는 아이디어를 도시한다. 도면에 도시된 바와 같이, 3개의 파라미터 - 사용자 ID, 송신(또는 수신) 일시 및 넘버링 -가 연결된다. 3개의 연결된 모든 파라미터를 주 키라고 하며, 이 정보는 '식별자' 역할을 한다. 도면에 도시된 바와 같이, 송신 일시와 연결된 사용자 ID는 문자 'x'로 간단히 표시되는 ID로 지칭된다. 이제, x 및 넘버링은 모두 함께 본 발명의 간결한 설명을 위해 "주 키"로 표시된다.
사용자가 다른 사용자(들)에게 텍스트 메시지를 송신할 때, 주 키 및 다른 정보가 사용자(들)에게 송신된다. 예를 들어, 사용자 B가 사용자 A, 사용자 C 및 사용자 D에게 텍스트 메시지를 송신한다고 가정하면, 장치는 텍스트를 송신할 때, 송신 일시 및 넘버링 0과 연결되는 송신자의 ID도 송신한다(이 정보는 또한 사용자 B 장치에도 저장된다). 따라서, 다른 세 명의 사용자가 수신하는 주 키는 다음과 같다.
User B + 2016-Dec-28-13:13:01:03 + 0
이제, 사용자 A가 사용자 B로부터 수신된 문장에 응답하는 경우, 사용자 A의 장치는 현재 넘버링(0)을 1로 대체하고, 새로운 주 키가 다른 사용자들에게 송신된다. 사용자 A의 장치가 송신하는 주 키는 다음과 같다.
User B + 2016-Dec-28-13:13:01:03 + 1
4명의 사용자 모두의 장치는 동일한 ID와 송신일시를 갖는 텍스트 메시지를 발견하며, 이것이 기존 주 문장의 제1 자식 문장임을 확인한다. 여기서, 송신일시는 주 문장의 송신일시이다. 사용자 C가 사용자 A로부터 수신된 문장에 응답하는 경우, 사용자 C의 장치는 현재 넘버링 1을 1.1로 대체하고, 새로운 주 키가 다른 사용자들에게 송신된다. 사용자 C의 장치가 송신하는 주 키는 다음과 같다.
User B + 2016-Dec-28-13:13:01:03 + 1.1
도 7i의 간단한 도시로부터, 레이아웃은 단순히, 특정 형상을 유지하면서 레이아웃 내의 모든 텍스트 박스들의 폭들이 변하는 "템플릿" 또는 "쉘"이다. "템플릿"(레이아웃) 내의 텍스트 박스들의 폭들을 조정하는 절차가 있으며, 이는 나중에 상세히 설명된다. 이하에서는 다수의 "템플릿"이 설명된다.
도 9a 내지 도 11b는 후술하는 파라미터들(예를 들어, I1 및 I0 정렬, 포인트 P1 및 P0, Δ1 및 Δ0, wk, αk 및 βk, c1k 및 c0k 등)을 제어함으로써 착신 및 발신 문장들을 포함하는 텍스트 박스들의 예시적인 레이아웃들이다. 파라미터들은 제어기(106) 또는 프로세서(들)(108)에 의해 제어되고 결정된다.
도 9a는 본 발명의 적어도 하나의 예시적인 실시예에 따른 레이아웃의 예시적인 "템플릿"을 도시한다. 이 템플릿은 특정 방식으로 거동하는 레이아웃의 청사진이다. 이 레이아웃을 일반화된 고정 각도 레이아웃(Generalized Fixed Angle Layout)(이하, GFAL)이라고 한다.
도 9a에는, 수평 라인(900), 즉 베이스 라인과 교차하는 2개의 가상 라인 I1 및 I0이 있다. 라인 I1 및 I0은 정렬 라인들이다. 이들은 사용자가 볼 수 없는 가상 라인들(또는 버추얼 라인들)이다. 정렬 라인이 베이스 라인과 교차하는 포인트는 베이스 포인트로 나타낸다. 따라서, 포인트 P1은 정렬 라인 I1과 베이스 라인이 교차하는 포인트이고, 포인트 P0은 정렬 라인 I0과 베이스 라인이 교차하는 포인트이다. Δ1 및 Δ0은 정렬 라인 I1 및 I0와 베이스 라인 간의 각도들을 나타낸다. Δ1 및 Δ0을 정렬 각도들이라고 한다. 이 2개의 각도는 π>Δ1≥Δ0>0(π=180 °)인 고정 값들이다. 각도 Δ1은 Δ0 이상으로 설정된다.
도 9a에서, 직사각형 박스들은 텍스트 박스들이며, 그들은 정렬 라인 I1 및 I0 사이에 배치된다. 각각의 텍스트 박스의 폭(이하, 텍스트 박스 폭)은 wk, k=0, 1, 2,...,d로 표시된다. 따라서, w0은 주 문장(깊이 0)의 텍스트 박스 폭을 나타내고, w1은 깊이 1의 텍스트 박스 폭을 나타내고, 기타 등등이다. GFAL에서 Δ1≥Δ0의 제한은 다음을 의미한다.
w0≥w1≥w2≥...≥wd
따라서, 모든 텍스트 박스들은 깊이가 더 낮아짐에 따라 폭이 감소한다. 값 wd는 파라미터가 아니라 변수(variable)이다. wd는 현재 레이아웃에서 최저 깊이에서의 텍스트 박스 폭을 나타낸다. 문자 d는 표시된 문장들 중에서 가장 낮다는 점에서 가능 낮은 깊이를 나타낸다. 가장 중요한 것은 깊이 k에서의 모든 텍스트 박스 폭들이 동일하다는 것이다. 따라서, wk(k에서의 텍스트 박스 폭)는 깊이 k의 모든 문장들에 적용된다.
도 9a에 도시된 바와 같이, 깊이 k에서의 각각의 텍스트 박스의 높이(이하, 텍스트 박스 높이)는 디폴트 높이 h로 설정된다. 디폴트 높이는 텍스트 박스의 가능한 최소 높이이며, h보다 작게 설정되지 않는다. 이 설정에서, 레이아웃에서 모든 디폴트 높이들은 동일하다. 다수의 텍스트 라인을 갖는 텍스트 박스들이 존재할 수 있으며, 이는 텍스트 박스 높이가 h보다 크다는 것을 의미한다. 그러나 도시된 템플릿은 모든 텍스트 박스 높이들이 디폴트 높이로 설정되는 경우에 텍스트 박스들이 어떻게 정렬되는지를 나타낸다.
텍스트 박스들 간의 수직 거리들은 γk(k=0, 1, 2,..., d-1, γ: 감마)로 표시된다. 값 γk는 깊이 k의 텍스트 박스의 중점(텍스트 박스의 측면 중심)에서 깊이 k + 1의 텍스트 박스의 중점까지의 거리를 나타낸다. 도 9a에서, γd는 정의되지 않는다. 깊이 k의 텍스트 박스 아래에 수직 거리 σk(σ: 시그마)가 존재한다. 따라서, σ0은 깊이 0의 텍스트 박스의 바닥 수직 거리를 나타낸다.
텍스트 박스의 좌측 중점으로부터 그의 부모 텍스트 박스의 좌측 중점까지의 수평 거리는 αk(k=0, 1, 2,...,d)로 표시된다. 여기서, α0=0이다. 또한, 텍스트 박스의 우측 중점에서 그의 부모 텍스트 박스의 우측 중점까지의 수평 거리는 βk(k=0, 1, 2,..., d)로 표시된다. 여기서, β0=0이다.
깊이 k의 텍스트 박스의 좌측 중점으로부터 정렬 라인 I1까지의 수평 거리는 c1k로 표시되고, 깊이 k의 텍스트 박스의 우측 중점으로부터 정렬 라인 I0까지의 수평 거리는 c0k로 표시된다. 제어기(106) 또는 프로세서(들)는 레이아웃의 2개의 측면에 볼록 또는 오목한 형상으로 텍스트 박스들을 표시하기 위해 이들 값(즉, 파라미터)을 조정 또는 설정한다. c1k=c0k=0 (k=1, 2,...,D)를 설정함으로써, 텍스트 박스들은 선형 정렬로 설정 또는 배열된다.
깊이 k의 문장의 텍스트 박스 폭이 결정될 때, 상이한 깊이에서의 다른 텍스트 박스 폭들은 깊이 k에서 결정된 텍스트 박스 폭에 기초하여 조정된다. 레이아웃의 전체 텍스트 박스 폭들은 절차(또는 알고리즘)에 따라 증가 또는 감소한다. GFAL에서는, 이런 경우마다, αk, βk, c1k 및 c0k의 값들이 일정하게 유지되면서 모든 텍스트 박스 폭들이 증가 또는 감소한다. 따라서, 레이아웃은 2개의 정렬 라인 I1 및 I0이 좌측 또는 우측으로 평행하게 시프트됨에 따라 다양한 선형 형상으로 변경되고 표시된다. 예를 들어, 텍스트 박스 폭들이 증가하는 경우에는 I1이 좌측으로 시프트되고, I0이 우측으로 시프트되며, 그리고 텍스트 박스 폭들이 감소하는 경우에는 I1이 우측으로 시프트되고, I0이 좌측으로 시프트된다.
도면에서, 정렬 라인 I1은 최대 정렬 라인 I1 fmax와 최소 정렬 라인 I1 fmin 사이에서 시프트된다는 점에 유의한다. 또한, 정렬 라인 I0은 최대 정렬 라인 I0 fmax와 최소 정렬 라인 I0 fmin 사이에서 시프트된다(위 첨자 fmax 및 fmin은 고정 각도 레이아웃 시스템에서 최대 및 최소를 나타낸다). 따라서, 정렬 라인 I1 및 I0이 각기 I1 fmax 및 I0 fmax와 일치하는 경우 또는 일치할 때, 레이아웃의 모든 텍스트 박스 폭들은 그들의 최대 폭들에 도달한다. 또한, 정렬 라인 I1 및 I0이 I1 fmin 및 I0 fmin과 일치하는 경우 또는 일치할 때, 레이아웃의 모든 텍스트 박스 폭들은 그들의 최소 폭들에 도달한다.
도면에서, 모든 텍스트 박스들의 텍스트 박스 높이들은 디폴트 높이에 있고, 정렬 라인들은 좌우 중점들(양 측면의 중심)을 통과한다. 어떠한 텍스트 박스들의 높이도 텍스트의 길이에 따라 디폴트 높이보다 크다. 그러나 정렬 라인이 도시된 도 9a에서는, 텍스트 박스들의 높이들이 디폴트 높이에 있다.
도 9b는 c10, c00, c1d 및 c0d가 0으로 설정되는 여러 분기를 갖는 레이아웃을 도시한다. 도면에서는, 여러 정렬 라인이 있으며, 그들은 모두 서로 평행하다. 또한, 문장 x.1.1(902) 상에 도시된 바와 같이, 정렬 라인은 문장 x.1.1.1과 연결되는 직선을 형성하지 않는다. 설명된 바와 같이, 이러한 라인들은 텍스트 박스 높이가 디폴트 높이에 있다는 가정하에 도시된다. 따라서, 정렬 라인은 끊어지고, 원래의 라인과 평행한 다른 라인이 문장 x.1.1.1의 좌우측 중점을 통과한다. 전술한 바와 같이, wk는 깊이 k에서의 텍스트 박스 폭을 나타낸다. 수학적으로, 폭 wk는 wk가 k의 함수이고, 나머지는 파라미터들이라는 것을 강조하기 위해 다음과 같이 표현될 수 있다.
wk=f(k, R, n, d, αk, βk, c1k, c0k)
또는
wk=f(k|R, n, d, αk, βk, c1k, c0k)
파라미터 αk, βk, c1k 및 c0k가 내부적으로 설정되는 경우에는, 다음과 같이 간단히 쓸 수 있다.
wk=f(k, R, n, d) 또는 wk=f(k|R, n, d)
이제까지, R값은 음이 아닌 실수이고, n은 음이 아닌 정수로서, 공식들, 절차들 또는 알고리즘들의 세트를 사용하여 프로세서에 의해 결정되는 것으로 가정한다. 공식은 모든 텍스트 박스 폭들(wk, k=0, 1, 2, ... , d)이 하나의 실수 값과 지정된 깊이 k에 의해 결정된다는 것을 나타낸다. w0 ≥ w1 ≥ w2 ≥ ... ≥ wd 이므로, 함수 f(k, R, n, d)는 깊이가 높아질수록 증가한다.
도 10a는 본 발명의 적어도 하나의 예시적인 실시예에 따른 새로운 레이아웃의 예시적인 "템플릿"을 도시한다. 이 템플릿은 특정 방식으로 거동하는 레이아웃의 청사진이다. 이 레이아웃은 일반화된 가변 각도 레이아웃(Generalized Varying Angle Layout)(이하, GVAL)을 나타낸다.
도 10a에는, 수평 라인(1000), 즉 베이스 라인과 교차하는 2개의 가상 라인 I1 및 I0이 있다. I1 및 I0은 정렬 라인들을 나타낸다. 정렬 라인이 베이스 라인과 교차하는 포인트를 회전 포인트라고 한다. 따라서, 포인트 P는 정렬 라인 I1 및 I0과 베이스 라인이 교차하는 포인트이다. 2가지 타입의 회전 포인트, 즉 고정 회전 포인트 및 부동 회전 포인트가 있다. 이 두 회전 포인트는 나중에 설명한다. I1 및 I0은 정렬 라인들을 나타낸다. Δ1과 Δ0는 정렬 라인들과 베이스 라인 간의 정렬 각도들이다. 이 두 각도 중 어느 하나가 고정되거나, 이들 중 어느 것도 고정되지 않는다. 또한, π>Δ1≥Δ0 > 0(π=180°)이다.
도 10a에서, 직사각형 박스들은 텍스트 박스들이고, 정렬 라인 I1과 I0 사이에 배치된다. 텍스트 박스 폭은 wk, k=0, 1, 2, ..., d로 표시된다. 따라서, w0은 주 문장(깊이 0)의 텍스트 박스 폭을 나타내며, w1은 깊이 1의 텍스트 박스 폭을 나타내고, 기타 등등이다. GVAL에서, Δ1≥Δ0의 제한은 다음을 의미한다.
w0 ≥ w1 ≥ w2 ≥...≥ wd
따라서, 모든 텍스트 박스는 깊이가 낮아짐에 따라 폭이 감소한다. wd 값은 현재 레이아웃에서 최저 깊이에서의 텍스트 박스 폭을 나타낸다. 문자 d는 표시되는 문장들 중에서 가장 낮다는 점에서 최저 깊이를 나타낸다. 가장 중요한 것은 깊이 k에서의 모든 텍스트 박스 폭이 동일하다는 것이다. 따라서, wk(k에서의 텍스트 박스 폭)는 깊이 k의 모든 문장에 적용된다.
도 10a에 도시된 바와 같이, 깊이 k에서의 텍스트 박스 높이는 디폴트 높이 h로 설정된다. 디폴트 높이는 텍스트 박스의 가능한 최소 높이이며 h보다 작을 수 없다. 이 설정에서는 모든 디폴트 높이가 레이아웃에서 동일하다. 다수의 라인의 텍스트들을 갖는 텍스트 박스들이 존재할 수 있으며, 이는 텍스트 박스 높이가 h보다 크다는 것을 의미한다. 그러나, 도시된 템플릿은 모든 텍스트 박스 높이가 디폴트 높이로 설정된 경우 텍스트 박스들이 어떻게 정렬되는지를 나타낸다.
텍스트 박스들 간의 수직 거리들은 γk (k=0, 1, 2, ..., d-1, γ: 감마)로 표시된다. γk 값은 깊이 k의 텍스트 박스의 중점(텍스트 박스의 면 중심)에서 깊이 k + 1의 텍스트 박스의 중점까지의 거리를 나타낸다. 도 10a에서는 γd가 정의되지 않는다. 깊이 k의 텍스트 박스 아래에 수직 거리 σk(σ: 시그마)가 존재한다. 따라서, σ0은 깊이 0의 텍스트 박스의 바닥 수직 거리를 나타낸다.
텍스트 박스의 좌측 중점으로부터 그의 부모 텍스트 박스의 좌측 중점까지의 수평 거리는 αk(k=0, 1, 2, ..., d)로 표시된다. 여기서, α0=0이다. 또한, 텍스트 박스의 우측 중점에서 그의 부모 텍스트 박스의 우측 중점까지의 수평 거리는 βk(k=0, 1, 2, ..., d)로 표시된다. 여기서, β0=0이다. GFAL과 달리, GVAL에서는, αk 및 βk 값이 각각 Δ1 및 Δ0 값에 의존한다. 즉, αk와 βk가 각각 Δ1과 Δ0의 함수일 때, αk1)와 βk0)로 쓰는 것이 더 적합하다.
깊이 k의 텍스트 박스의 좌측 중점으로부터 정렬 라인 I1까지의 수평 거리는 c1k로 표시되고, 깊이 k의 텍스트 박스의 우측 중점으로부터 정렬 라인 I0까지의 수평 거리는 c0k로 표시된다. 도면에서, c10, c00, c1d 및 c0d는 0으로 설정된다. 이들 값(파라미터)을 조정함으로써, 텍스트 박스들이 레이아웃의 양측에 볼록 또는 오목 형상으로 표시된다. c1k=c0k=0 (k=1, 2, ..., D)을 설정함으로써, 텍스트 박스들은 선형 정렬로 설정되거나 배열된다. c1k와 c0k는 각각 고정되거나 Δ1과 Δ0의 함수이다. c1k와 c0k가 각각 Δ1과 Δ0의 함수일 때, c1k1)와 c0k0)으로 쓰는 것이 더 적합하다.
깊이 k의 문장의 텍스트 박스 폭이 결정될 때, 다른 깊이에서의 다른 텍스트 박스 폭들은 깊이 k에서 결정된 폭에 기초하여 조정된다. 레이아웃의 전체 텍스트 박스 폭들은 프로세서(들) 또는 제어기(106)에 의해 수행하는 절차(또는 알고리즘)에 따라 증가 또는 감소한다. GVAL에서는, 이것이 발생할 때마다, 모든 텍스트 박스 폭은 회전 포인트 P와 결정된 텍스트 박스 폭에 의해 형성된 각도들에 의해 결정된 Δ1 및 Δ0의 값들에 따라 증가 또는 감소한다. 따라서, 2개의 정렬 라인 I1 및 I0이 부채처럼 좌측 또는 우측으로 회전하는 경우에 2개의 정렬 라인 I1 및 I0을 좌측 또는 우측 방향으로 회전하도록 제어함으로써, 터치스크린(즉, 장치(200)의 디스플레이) 상에 텍스트 메시지들 각각의 텍스트 박스들을 표시하기 위한 레이아웃이 다양하게 변경될 수 있다. 즉, 프로세서(들) 또는 제어기(106)는 터치스크린 상의 사용자 접촉 또는 터치(즉, 2개의 정렬 라인 I1 및 I0 중 하나 또는 둘 모두)를 검출하여 2개의 정렬 라인 I1 및 I0을 좌측 또는 우측 방향으로 회전시킴으로써 레이아웃을 변경한다. 텍스트 박스 폭들이 증가하는 경우, I1은 좌측으로 회전하고, I0는 우측으로 회전하며, 텍스트 박스 폭들이 감소하는 경우에는 그 반대이다.
도면에서, 정렬 라인 I1은 최대 정렬 라인 I1 vmax와 최소 정렬 라인 I1 vmin 사이에서 회전한다는 점에 유의한다. 또한, 정렬 라인 I0은 최대 정렬 라인 I0 vmax와 최소 정렬 라인 I0 vmin(위 첨자 vmax 및 vmin은 가변 각도의 최대 및 최소를 나타냄) 사이에서 회전한다. 따라서, 정렬 라인 I1과 I0이 I1 vmax와 I0 vmax와 일치할 때, 레이아웃의 모든 텍스트 박스 폭이 그들의 최대 폭들에 도달한다. 또한, 정렬 라인 I1과 I0이 I1 vmin과 I0 vmin과 일치할 때, 레이아웃의 모든 텍스트 박스 폭이 그들의 최소 폭들에 도달한다.
도면에서, 모든 텍스트 박스의 텍스트 박스 높이들은 디폴트 높이에 있고, 정렬 라인들은 좌우 중점들(양측면의 중심)을 통과한다. 임의의 텍스트 박스들의 높이는 텍스트의 길이에 따라 디폴트 높이보다 크다. 그러나, 도 10a에서 정렬 라인을 그릴 때, 텍스트 박스들의 높이들은 디폴트 높이들에 있다.
도 10b는 여러 개의 분기(도 10b에서, 문장 x.1의 제1 분기, 문장 x.2의 제2 분기 및 문장 x.3의 제3 분기)를 갖는 레이아웃을 도시하며, 여기서 c10, c00, c1d 및 c0d는 0으로 설정된다. 도면에는, 여러 개의 정렬 라인이 있으며, 이들은 모두 서로 평행하다. 또한, 문장 x.1.1(1002) 상에 예시된 바와 같이, 정렬 라인은 문장 x.1.1.1을 연결하는 직선을 형성하지 않는다. 언급했듯이, 이들 라인은 텍스트 박스 높이가 디폴트 높이에 있다는 가정하에 그려진다. 따라서, 정렬 라인은 끊어지고, 원래의 것과 평행한 다른 하나가 문장 x.1.1.1의 좌측 및 우측 중점을 통과한다.
수학적으로, 폭 wk는 다음과 같이 함수 v(·)를 사용하여 표현될 수 있다.
wk=v(k, R, n, d, αk1), βk0), c1k1), c0k0))
또는 wk가 k의 함수이고 나머지는 파라미터들이라는 것을 강조하기 위해 다음과 같이 표현될 수 있다.
wk=v(k|R, n, d, αk1), βk0), c1k1), c0k0))
도 11a는 본 발명의 적어도 하나의 예시적인 실시예에 따른 새로운 레이아웃의 예시적인 "템플릿"을 도시한다. 이 템플릿은 특정 방식으로 거동하는 레이아웃의 청사진이다. 이 레이아웃은 일반화된 혼합 각도 레이아웃(Generalized Mixed Angle Layout)(이하, GMAL)을 나타낸다. 레이아웃의 이름으로부터, GMAL은 GFAL과 GVAL의 하이브리드이다.
이 레이아웃에서, 텍스트 박스 폭이 소정 폭보다 작을 때, 레이아웃은 GVAL로서 거동하고, 소정 폭을 초과할 때 GFAL로서 거동한다. 레이아웃이 GFAL로서 거동할 때, 레이아웃은 GFAL 모드에 있고, 레이아웃이 GVAL로서 거동할 때, 레이아웃은 GVAL 모드에 있다. 도면에는, 2개의 가상 라인 I1과 I0이 있다. I1과 I0을 정렬 라인이라고 한다. 다시 말하지만, 이들은 사용자가 볼 수 없는 가상 라인들이다.
레이아웃이 GVAL 모드에 있을 때, 2개의 정렬 라인 I1 및 I0은 최저 깊이 d의 문장의 좌측 중점 및 우측 중점에 대해 회전한다. 레이아웃이 GVAL 모드에 있을 때, 최저 깊이의 문장의 텍스트 박스 폭은 md d이다. 그 외에 경우에는, 레이아웃은 GFAL 모드에 있다. 레이아웃이 GVAL 모드에 있을 때, 좌측 회전 포인트를 P1 d로 나타내고, 우측 회전 포인트를 P0 d로 나타낸다. 2개의 정렬 라인 I1 및 I0의 중요한 위치들이 있으며, 이들 위치는 레이아웃의 모드를 정의한다. 정렬 라인 I1은 I1 vmin과 I1 vmax 사이에서 회전한다. 정렬 라인 I0은 I0 vmin과 I0 vmax 사이에서 회전한다. 이 두 세트의 각도 {I1 vmin, I1 vmax} 및 {I0 vmin, I0 vmax}는 레이아웃의 GVAL 부분을 정의한다. 정렬 라인 I1은 I1 fmin과 I1 fmax 사이에서 평행하게 시프트되고, 정렬 라인 I0은 I0 fmin과 I0 fmax 사이에서 평행하게 시프트된다. 이 두 세트의 라인 {I1 fmin, I1 fmax} 및 {I0 fmin, I0 fmax}는 레이아웃의 GFAL 부분을 정의한다. I1 fmin=I1 vmax 및 I0 fmin=I0 vmax임을 주목한다. 레이아웃이 GFAL 모드에 있을 때, 정렬 라인들은 고정되고, 베이스 라인(1100)과 교차한다.
GMAL은 GFAL과 GVAL의 혼합이기 때문에, 두 가지 타입의 최대 폭들 및 최소 폭들이 각각 존재한다. GFAL 부분에 대해 Mk d,f 및 mk d,f가 있다(위 첨자 f는 고정을 의미한다). 또한, GVAL 부분에 대해 Mk d,v 및 mk d,v가 있다(위 첨자 v는 변화를 의미한다). 이들 최대 폭 및 최소 폭은 이전에 설명한 정렬 위치들에 의해 결정된다.
최대 폭들을 사용하여, 최저 깊이의 문장의 텍스트 박스 폭은 m으로 설정된다(즉, wd=md d,v=Md d,v=m). (모든 k=0, 1, 2, ..., d에 대해) wk≤Mk d,v일 때, 레이아웃은 GVAL로서 거동한다. 이 조건이 유지되지 않을 때, 즉 wk>Mk d,v일 때, 레이아웃은 GFAL로서 거동한다. wk≤Mk d,v일 때, 2개의 가상 정렬 라인 I1 및 I0은 각각 최저 깊이 d의 텍스트 박스의 좌측 중점 및 우측 중점 주위를 회전한다. 정렬 위치 I1 vmin 및 I0 vmin은 레이아웃의 GVAL 부분의 최소 폭들을 결정하는 라인들(위치들)이다. 분명히, 정렬 위치 I1 vmax 및 I0 vmax는 레이아웃의 GVAL 부분의 최대 폭들을 결정하는 라인들이다. 따라서, 정렬 라인 I1은 I1 vmin과 I1 vmax 사이에서 회전하고, 정렬 라인 I0은 I0 vmin과 I0 vmax 사이에서 회전한다. 정렬 라인 I1과 I0이 I1 vmin과 I0 vmin과 일치하는 경우 또는 일치할 때, 이 폭은 Mk d,v를 정의하고, 정렬 라인 I1과 I0이 I1 vmax와 I0 vmax와 일치하는 경우 또는 일치할 때, 이 폭은 mk d,f를 정의한다. I1이 I1 vmax를 통과하는 경우 또는 통과할 때, 정렬 라인 I1은 GFAL로서 거동하고, I1은 회전하는 대신 평행하게 시프트되기 시작한다. I0이 I0 vmax를 통과하는 경우 또는 통과할 때, 정렬 라인 I0은 GFAL로서 거동하고, I0는 회전하는 대신 평행하게 시프트되기 시작한다. 따라서, I1 vmax는 I1 fmin과 동일하고, I0 vmax는 I0 fmin과 동일하다. 달리 말하면, mk d,f=Mk d,v이다. 마지막으로, I1과 I0의 평행하게 시프트될 때, 시프트를 제한하는 위치들은 I1 fmax와 I0 fmax이다. 2개의 정렬 라인 간의 거리는 Mk d,f를 정의한다.
도 11b는 여러 개의 분기를 갖는 레이아웃을 도시하며, 여기서 c10, c00, c1d 및 c0d는 0으로 설정된다. 도면에는, 여러 개의 정렬 라인이 있으며, 이들은 모두 서로 평행하다.
(모든 k=0, 1, 2, ..., D에 대해) c1k=c0k=0일 때, I1 및 I0을 사용하는 대신에, L1 및 L0을 사용하며, 이들은 선형 정렬 라인들이라고 한다. c1k와 c0k가 정렬이 매끄러운 볼록 곡선을 형성하도록 설정되면, Cv 1과 Cv 0을 사용하며, 이들은 볼록 정렬 곡선들이라고 한다. 정렬이 매끄러운 오목한 곡선을 형성하도록 c1k 및 c0k가 설정되면, Cc 1 및 Cc 0을 사용하며, 이들은 오목 정렬 곡선들이라고 한다.
3 가지 타입의 레이아웃, 즉 GFAL, GVAL 및 GMAL이 소개되었다. 모든 레이아웃에서, 텍스트 박스 폭은 고유한 방식으로 증가 및 감소한다. 이러한 일반화된 버전들로부터, 특수 사례들이 도출될 수 있다. 이러한 모든 특수한 사례에서, 모든 k=0, 1, 2, ..., D에 대해 c1k=c0k=0이다.
도출될 수 있는 무한히 많은 사례 중에 GFAL의 5개의 특수 사례(또는 서브세트)가 있다.
처음 2개는 SWL(Same Width Layout, 동일 폭 레이아웃)이라고 한다. 이들은 정렬 라인 L1 및 L0의 기울기가 서로 평행하도록(Δ10) 고정되는 사례들이다. 이 레이아웃에서, 모든 텍스트 박스 폭은 각각의 문장의 깊이에 관계없이 같은 폭이다. Δ10=Δ > π/2이면, 이 특수 사례의 레이아웃을 SWL-LR(동일 폭 레이아웃 - 좌에서 우로)이라고 한다. Δ10=Δ < π/2이면, 이 특수 사례의 레이아웃을 SWL-RL(동일 폭 레이아웃 - 우에서 좌로)이라고 한다. SWL-LR 및 SWL-RL은 모두 도 12a 및 12b에 도시되어 있다.
마지막 3개를 FAL(고정 각도 레이아웃)이라고 한다. L1만이 우측 또는 좌측으로 시프트되는 경우에 정렬 라인 L1의 기울기가 Δ1 > π/2이고 L0이 수직(Δ0=π/2)이도록 설정될 때, 레이아웃은 FAL-R(고정 각도 레이아웃 - 우측 정렬)이라고 한다. L1과 L0 모두가 좌측 또는 우측으로(서로 반대 방향으로) 시프트되는 경우에 정렬 라인 L1의 기울기가 Δ1>π/2가 되도록 설정되고, L0의 기울기가 Δ0<π/2(Δ1=π-Δ0)가 되도록 설정될 때, 레이아웃은 FAL-C(고정 각도 레이아웃 - 중심 정렬)라고 한다. L0만이 우측 또는 좌측으로 시프트되는 경우에 정렬 라인 L1이 수직(Δ1=π/2)이고, 정렬 라인 L0의 기울기가 Δ0<π/2가 되도록 설정될 때, 레이아웃은 FAL-L(고정 각도 레이아웃 - 좌측 정렬)이라고 한다. 도 12c, 도 12d 및 도 12e는 각각 FAL-R, FAL-C 및 FAL-L을 도시한다.
무한히 많은 사례 중 GVAL의 3개의 특수 사례(또는 서브세트)가 도출될 수 있다.
L1만이 시계 방향 또는 반시계 방향으로 회전하는 경우에 정렬 라인 L1의 기울기가 Δ1>π/2이고 L0이 수직(Δ0=π/2)이 되도록 설정될 때, 레이아웃은 VAL-R(가변 각도 레이아웃 - 우측 정렬)이라고 한다. L1과 L0이 모두 시계 방향 또는 반시계 방향으로(서로 반대 방향으로) 회전하는 경우에 정렬 라인 L1의 기울기가 Δ1>π/2가 되도록 설정되고, L0의 기울기가 Δ0<π/2(Δ1=π-Δ0)가 되도록 설정될 때, 레이아웃은 VAL-C(가변 각도 레이아웃- 중심 정렬)라고 한다. L0만이 시계 방향 또는 반시계 방향으로 회전하는 경우에 정렬 라인 L1이 수직(Δ1=π/2)이고, 정렬 라인 L0의 기울기가 Δ0 π/2가 되도록 설정될 때, 레이아웃은 VAL-L(가변 각도 레이아웃 - 좌측 정렬)이라고 한다. 도 12c, 도 12d 및 도 12e는 각각 VAL-R, VAL-C 및 VAL-L을 도시한다.
마지막으로, FAL 및 VAL을 조합함으로써 무한히 많은 사례 중에서 GMAL의 3개의 특수 사례(또는 서브세트)가 도출될 수 있다. 이들 특수 사례를 MAL-R, MAL-C 및 MAL-L이라고 한다. 도 12c, 도 12d 및 도 12e는 각각 MAL-R, MAL-C 및 MAL-L을 도시한다. FAL들, VAL들 및 MAL들의 정지 도면들은 동일하지만, 그들의 움직임들은 동일하지 않다는 점에 유의해야 한다.
SWL-RL, FAL-L, VAL-L 및 MAL-L은 히브리어 또는 아랍어와 같이 우측에서 좌측으로 쓰는 언어들에 특히 유용하다는 점에 유의한다.
요컨대, 구조화된 IM은 다음의 조건을 만족시킨다: (1) 제1 텍스트가 가장 큰 텍스트 박스 폭을 갖고; (2) 같은 깊이에서의 모든 텍스트 박스 폭은 동일하고; (3) 장치가 텍스트를 송신/수신할 때마다 모든 텍스트 박스 폭이 수정되고; (4) 깊이 k에서의 모든 텍스트 박스 폭 w에 대해, M0≥M1≥M2≥...≥Md 및 m0≥m1≥m2≥...≥md인 경우에 Mk≥wk≥mk이다(여기서, d 최저 깊이를 나타낸다). 이것은 (A) 모든 텍스트를 고유하게 넘버링하는 메커니즘, (B) 텍스트 박스들의 모든 폭을 조정하는 메커니즘, 및 (C) 텍스트를 그의 올바른(의도된) 위치에 배치하는 메커니즘이 있음을 의미한다. 따라서, RMS는 구조화된 IM과 이 모든 3개의 메커니즘으로 구성된다.
도 7a 내지 도 12e로부터, 간단한 예시들 및 다양한 템플릿들(GFAL, GVAL 및 GMAL)이 제공되었다. 그러나, 템플릿을 "구동"하는 메커니즘은 소개되지 않았다. 텍스트 박스 폭들을 조정하는 "메커니즘"은 텍스트 박스 폭 조정(이하, TWA)이라고 한다.
여기서 설명될 도 7i와 관련된 모든 동작은 도 1 내지 도 6에 도시된 다른 컴포넌트들을 통신 및 제어함으로써 적어도 제어기(106)(또는 프로세서(들)(108) 또는 이들 양자의 조합)에 의해 제어되고 수행된다. 간결한 설명의 목적으로, 제어기(106) 및/또는 프로세서(들)(108)에 의해 수행될 대응하는 동작들이 이후에 설명된다.
이제, TWA가 상세히 설명된다.
언급한 바와 같이, 제1 규칙은 모든 텍스트 박스 폭이 다음 규칙에 따른다는 것이다.
w0 ≥ w1 ≥ w2 ≥ ... ≥ wd
제2 규칙은 동일한 깊이에서의 모든 텍스트 박스 폭이 동일한 폭을 갖는다는 것이다. 즉, 다음과 같다.
wk 1=wk 2=wk 3=...=wk s
여기서, wk는 깊이 k에서의 텍스트 박스 폭을 나타내며, s는 동일한 깊이(깊이 k)의 상이한 문장들을 나타낸다. wk의 값은 최소 폭 mk와 최대 폭 Mk 사이(mk≤wk≤Mk)이어야 한다. 아래에서, 한 쌍의 용어가 정의된다.
착신 또는 발신 문장의 텍스트의 문자 길이는 텍스트 길이라고 한다. 텍스트 길이는 임의의 길이일 수 있다. 설명된 바와 같이, 텍스트 길이는 임의의 단위(예를 들어, 픽셀, 밀리미터, 센티미터, 인치, 문자 수 등)일 수 있다. 텍스트 길이는 mk보다 작고 Mk보다 클 수 있다. 장치가 깊이 k에서의 텍스트 박스 폭을 Mk와 같게 설정하고, 텍스트 길이가 Mk보다 큰 경우, 이것은 텍스트가 텍스트 박스 안의 다수의 라인에 나타나게 할 것이다. 또한, 텍스트 길이가 mk보다 작더라도 mk는 깊이 k에서 가능한 가장 작은 텍스트 박스 폭이므로, 텍스트는 텍스트 박스 폭이 mk인 경우에 텍스트 박스 안에 표시된다.
TWA에서, 장치가 착신 또는 발신 문장(즉, 텍스트 메시지)을 검출할 때마다, 장치는 레이아웃의 모든 텍스트 박스 폭을 조정하기 시작한다. 그렇게 하기 위해, 장치는 깊이 n에서의 "최상의" 또는 "최적화된" 텍스트 박스 폭을 선택한다. 위에서 언급한 제2 규칙에 의해, 이것은 깊이 n에서의 모든 텍스트 박스 폭이 이러한 새로 계산된 "최상의" 또는 "최적화된" 텍스트 박스 폭과 동일하게 한다. 또한, 이 "최상의" 또는 "최적화된" 텍스트 박스 폭이 깊이 n에서 결정되면, 깊이 0, 1, 2, ..., n-1, n + 1, ..., d에서의 나머지 텍스트 박스 폭이 결정될 수 있는데, 이는 GFAL, GVAL 및 GMAL이 기하학적 규칙들을 따르기 때문이다. 이 "최상의" 또는 "최적화된" 텍스트 박스 폭은 깊이 n에서의 기준 폭이라고 하며, R(n)(0≤n≤d)으로 표시된다.
R(n)이 알고리즘 또는 수학식에 의해 결정된다고 가정하면, 장치가 GFAL 상에서 동작하는 경우 또는 동작할 때, 나머지 텍스트 박스 폭은 간단한 선형 방정식을 사용하여 계산될 수 있고, 장치가 GVAL 상에서 동작한다면, 나머지 텍스트 박스의 폭은 간단한 삼각법 특성들을 사용하여 계산될 수 있다. GMAL의 경우, 장치는 레이아웃의 모드에 기초하여 나머지 텍스트 박스 폭을 계산한다.
아이디어의 흐름은 도 13a 및 도 13b에 상세히 도시된다.
도 13a는 TWA의 처리의 상세도를 도시한다. 흐름도의 상부에 표시된 것처럼, 장치는 텍스트 길이 tk s(이것은 깊이 k의 s 번째 문장의 텍스트 길이임)를 갖는 착신 또는 발신 문장을 검출한다. 검출 후, 다음 단계는 기준 폭과 기준 깊이를 발견하는 것이다. 기준 폭의 발견은 방정식으로 표현되는 두 단계를 포함한다. 기준 폭을 결정하는 이 방정식들의 세트를 기준 폭 방정식(Reference-Width Equation, RWE)이라고 한다. 기준 깊이를 결정하는 방정식(들)의 세트를 기준 깊이 방정식(Reference-Depth Equation, RDE)이라고 한다. 일반적으로, RWE는 두 단계로 나뉠 수 있다. 제1 단계는 동일한 깊이들에서의 텍스트 길이들의 풀로부터 값을 단순히 계산하는 것이다. 이 프로세스는 수학 함수로 표시되며, 인트라-깊이 방정식(인트라 DE)이라고 한다. 인트라 DE는 각각의 함수가 동일한 깊이에서의 텍스트 길이들을 입력으로 사용하는 함수들의 세트이다. 각각의 함수는 다음과 같이 표시된다.
Tk=fintra(tk 1, tk 2, tk 3, ..., tk s)
여기서, fintra(·)는 깊이 k에서의 모든(s개의) 텍스트 길이를 사용하는 함수이다. tk s는 깊이 k의 s 번째 텍스트 메시지의 텍스트 길이를 나타낸다. 이 함수의 결과는 숫자 값(음수가 아닌 실수)인 Tk이다. 인트라 DE는 k=0, 1, 2, ... d에 대한 모든 Tk 값을 계산한다. 따라서, 인트라 DE는 d+1개의 값 {T0, T1, T2, ..., Td}를 생성한다. 음수가 아닌 정수 k는 단지 0에서 d(d는 레이아웃에서 최저 깊이임)까지의 깊이를 나타내는 인덱스라는 점에 유의한다. 하나의 주 문장만이 존재할 수 있으며 이 때 T0=fintra(t0 1)이고, 따라서 깊이 1의 텍스트 메시지의 경우 T1=fintra(t1 1, t1 2, ..., t1 a)이고, 깊이 2의 텍스트 메시지의 경우 T2=fintra(t2 1, t2 2, ..., t2 b)이며, 나머지 깊이에 대해서도 마찬가지이다. 따라서, 모든 텍스트 길이에 인트라 DE가 적용된 후에는 {T0, T1, T2, ..., Td} 세트가 존재한다.
인트라 DE가 계산되면, 다음 단계는 인터-깊이 방정식(인터 DE)을 사용하여 기준 폭을 발견하는 것이다. 인트라 DE와 달리, 인터 DE는 값들의 세트 {T0, T1, T2, ..., Td}를 사용하는 단 하나의 함수로 구성된다. 인터 DE는 다음과 같이 표시된다.
R=finter(T1, T2, ..., Td).
여기서, finter(·)는 인트라 DE로부터의 모든 (d+1개의) 값을 사용하는 함수이다. 인터 DE의 결과는 R로 표시되며, 이는 기준 폭이다. 기준 폭이 결정되면, 기준 깊이 n이 결정된다. n=d(d는 최저 깊이임) 설정, n=0 설정, 기준 깊이의 무작위 선택 등과 같이 기준 깊이를 결정하는 여러 방법이 존재한다. 하나의 "합리적인" 방법은 기준 깊이를 인트라 DE의 결과로부터 최대 값을 제공하는 깊이로 설정하는 것이다. 수학적으로:
Tn=max{T0, T1, T2, ..., Td}가 되도록 n을 설정한다.
절차를 더 일반화하기 위해, RDE는 다음과 같이 표현된다.
n=fRDE(t0 1, t1 1,t1 2,...,t1 a, t2 1,t2 2,...,t2 b, t3 1,t3 2,...,t3 c, ..., td 1,td 2,...,td z)
또는
n=fRDE(레이아웃의 모든 텍스트 길이)
이 방정식은 기준 깊이 n이 레이아웃의 모든 텍스트 길이에 기초하여 결정된다는 것을 의미한다. 기준 폭과 기준 깊이가 계산되면, 결과는 R(n)으로 표시된다.
언급된 바와 같이, 제2 프로세스는 제1 프로세스로부터 결정된 기준 폭 R(n)이 깊이 n에서의 최소 폭과 최대 폭 사이에 있는지를 검사한다. 즉, mn≤R(n)≤Mn인지를 검사한다. 기준 폭이 mn보다 작은 경우, 기준 폭 R은 mn으로 조정된다. 한편, 기준 폭이 Mn보다 큰 경우, 기준 폭 R은 Mn으로 조정된다. 이 프로세스의 목적은 계산된 기준 폭이 허용된 범위에 있는 것을 보장하는 것이다. 이 프로세스를 수행하는 방정식을 최소-최대 조건 방정식(Min-Max Condition Equation, MCE)이라고 한다. 수학적으로, 이것은 간단히 다음과 같다.
R=min{Mn, max{mn, R}}
R(n)이 계산되면, 장치는 레이아웃의 나머지 텍스트 박스에 대한 텍스트 박스 폭을 결정한다. 동일한 깊이의 모든 텍스트 박스는 동일한 텍스트 박스 폭을 갖기 때문에, 장치는 d개의 텍스트 박스 폭만 결정한다. 즉, 깊이 n의 텍스트 박스 기준 폭 R(n)이 결정되면, 장치는 깊이 0, 1, 2, ..., n-1, n+1, ..., d의 텍스트 박스들에 대한 텍스트 박스 폭들을 결정한다. 이것은 제3 프로세스이며, 전파 기준 폭 방정식(Propagating Reference-width Equation, PRE)이라고 한다. PRE는 R, n 및 d를 파라미터로 하는 깊이 i의 함수이며, 다음과 같이 표시된다.
wi=fRDE(i|R, n, d)
여기서, i=0, 1, 2, ..., n-1, n+1, ..., d이다.
GFAL에서의 정렬 라인들은 평행하게 시프트되기 때문에, R(n)이 결정되면, 나머지 텍스트 박스 폭은 선형 방정식을 사용하여 계산될 수 있다. 반면, GVAL에서는 정렬 라인들이 회전하기 때문에, 나머지 텍스트 박스 폭은 삼각법 특성들을 사용하여 계산될 수 있다.
마지막으로, 마지막 프로세스는 텍스트 박스들 내에 텍스트들을 배치하고 텍스트 박스들을 그들의 올바른 위치들에 배치하는 것을 포함한다.
도 13a의 흐름도는 GFAL 및 GVAL에 대한 것이라는 점에 유의한다. 그러나, GMAL의 경우, 두 세트의 최대 폭 및 최소 폭 - Mk f, Mk v, mk f 및 mk v가 있으므로, 레이아웃 모드를 검사하는 추가 단계가 필요하다. 이것은 도 13b의 음영 박스(1300)에 도시된다. R(n)이 계산되면, 장치는 R(n)이 GVAL 모드의 최대 폭인 Mn v보다 큰지를 검사한다. R이 Mn v보다 크면, 장치는 레이아웃이 GFAL 모드에 있음을 확인하고, 다음을 검사한다.
R=min{Mn f, R}
한편, R이 Mn v 이하인 경우, 장치는 레이아웃이 GVAL 모드에 있음을 확인하고, 다음을 검사한다.
R=max{mn v, R}
장치는 레이아웃이 어떤 모드에 있는지를 포함하는 이러한 정보에 기초하여 PRE를 실행하고 나머지 텍스트 박스의 텍스트 박스 폭을 결정한다.
기준 폭 및 기준 깊이 R(n)을 결정하는 여러 상이한 종류의 RWE 및 RDE 방정식이 있다. 언급한 것처럼, R(n)을 결정하는 프로세스는 텍스트 길이들의 풀을 사용한다.
도 14는 "플러그인(plug-in)"으로서 사용될 수 있는 다양한 RWE 및 RDE를 도시한다. 여기서는 RWE 및 RDE의 예시 목적을 위해 상세한 설명이 제공된다.
도 14의 표의 제1 RWE는 최대들 중 최대(Maximum of Maximums, MoM)이다. 이름이 암시하듯이, 이 프로세스는 텍스트 길이가 가장 긴 것을 기준 폭으로 선택한다. 먼저, 인트라 DE에서, 동일한 깊이에서의 텍스트 길이들 중에서 가장 큰 텍스트 길이가 선택된다. 이것은 다음과 같이 표현되고:
Tk = max{tk 1, tk 2, tk 3, ...} (k=0, 1, 2, ..., d)
결과는 다음의 세트이다.
{T0, T1, T2, ..., Td}
이어서, 인터 DE는 위의 세트에서 가장 큰 것을 선택하며, 이는 다음과 같이 표현된다.
R= max{T0, T1, T2, ..., Td}
이제, 장치는 가장 큰 텍스트 길이가 나온 깊이를 선택하여 기준 깊이 n을 선택한다. 이것은 다음과 같이 표현된다:
Tn = max{T0, T1, T2, ..., Td}가 되도록 하는 n
여기서, 기준 폭은 R이고, 기준 깊이는 n이다.
도 14의 표의 제2 RWE는 최대들의 평균(Average of Maximums, AoM)이다. 이름이 암시하듯이, 이 프로세스는 각각의 깊이에서의 가장 큰 텍스트 길이를 선택한 다음 그들의 평균을 취한다. 이 평균은 기준 폭으로 선택된다. 먼저, 인트라 DE에서, 동일한 깊이에서의 텍스트 길이들 중에서 가장 큰 텍스트 길이가 선택된다. 이것은 다음과 같이 표현되며:
Tk = max{tk 1, tk 2, tk 3, ...} (k=0, 1, 2, ..., d)
결과는 다음의 세트이다.
{T0, T1, T2, ..., Td}
이어서, 인터 DE는 위의 세트의 평균을 계산하며, 이는 다음과 같이 표현된다.
R = (T0 + T1 + T2 +...+ Td)/(d + 1)
이제, 장치는 가장 큰 텍스트 길이가 나온 깊이를 기준 깊이 n으로 선택한다. 이것은 다음과 같이 표현된다:
Tn = max{T0, T1, T2, ..., Td}가 되도록 하는 n
여기서, 기준 폭은 R이고, 기준 깊이는 n이다.
도 14의 표의 제3 RWE는 최대들의 정규화(Normalization of Maximums, NoM)이다. 언급된 바와 같이, 임의의 텍스트 박스 폭은 그의 부모 문장의 텍스트 박스의 길이 이하이다. 모든 텍스트 박스 폭은 깊이 k에서의 최대 폭 Mk에 의해 제한되기 때문에, 임의의 텍스트 길이 tk를 그의 최대 길이 Mk로 정규화하는 것이 합리적이다. 예를 들어, t0=90, t1=90, M0=100 및 M1=90이고, 텍스트 길이들이 그들의 대응하는 최대 폭에 의해 정규화되는 경우, 결과는 다음과 같다.
t0/M0=0.9 및 t1/M1=1.0
이는 깊이 1에서의 텍스트 길이가 그의 허용된 최대 폭과 비교하여 깊이 0에서의 텍스트 길이보다 크다는 것을 의미한다. 이것이 정규화의 배경 아이디어이다. 먼저, 인트라 DE에서, 동일한 깊이에서의 텍스트 길이들 중에서 가장 큰 텍스트 길이가 선택된다. 이것은 다음과 같이 표현되며:
Tk = max{tk 1, tk 2, tk 3, ...} (k=0, 1, 2, ..., d)
결과는 다음의 세트이다.
{T0, T1, T2, ..., Td}
이어서, 인터 DE는 위의 세트에서 가장 큰 것을 선택하며, 각각의 값은 그의 대응하는 최대 폭에 의해 정규화되며, 이는 다음과 같이 표현된다.
N = max{T0/M0, T1/M1, T2/M2, ..., Td/Md}
정규화된 값들의 최대가 발견되면, 프로세스는 정규화를 "취소"하고, 이것은 다음과 같이 표현한다.
R = N·Mk
이제, 장치는 정규화된 텍스트 길이의 최대가 나온 깊이를 선택하여 기준 깊이 n을 선택한다. 이것은 다음과 같이 표현된다:
Tn = max{T0/M0, T1/M1, T2/M2, ..., Td/Md}이 되도록 하는 n
따라서, 기준 폭은 R이고, 기준 깊이는 n이다.
제4 RWE는 정규화된 최대치의 평균(Average of Normalized Maximums, AoNM)이다. 인트라 DE에서, 동일한 깊이에서의 텍스트 길이들 중에서 가장 큰 텍스트 길이가 선택되며 이를 Tk 로 표현한다. 이어서 인터 DE는 위의 정규화된 최대치의 평균을 구하며 이 값을 N 으로 표현한다. N 을 구한 후, 장치는 가장 큰 정규화된 텍스트 길이인 max{T0/M0, T1/M1, T2/M2, ..., Td/Md)와 이 길이가 나온 깊이를 계산한다. 이제, 장치는 N 과 방금 계산된 깊이에서의 최대 길이를 곱한다. 따라서, 기준 폭 R은 다음과 같이 표현된다.
R=N·Mk
이제, 장치는 정규화된 텍스트 길이의 최대가 나온 깊이를 선택하여 기준 깊이 n을 선택한다. 이것은 다음과 같이 표현된다:
Tn/Mn=max{T0/M0, T1/M1, T2/M2, ..., Td/Md}이 되도록 하는 n
따라서, 기준 폭은 R이고, 기준 깊이는 n이다.
제5 RWE는 평균들의 최대이다. 이 프로세스는 최대들의 평균(AoM)과 반대되는 개념이다. 인트라 DE에서, 동일한 깊이에서의 텍스트 길이들의 평균을 구하며 이를 Tk 로 표현한다. 이어서 인터 DE는 위의 값들 중에서 최대치를 구한다. 따라서, 기준 폭 R 은 앞서 언급한 최대치이고 기준 깊이는 Tn=max{T0, T1, T2, ..., Td} 이 되도록 하는 n 이다.
제6 RWE는 평균들의 평균이다. 인트라 DE에서, 동일한 깊이에서의 텍스트 길이들의 평균을 구하며 이를 Tk 로 표현한다. 이어서 인터 DE는 위의 값들 평균을 구한다. 따라서, 기준 폭 R 은 앞서 언급한 평균값이고 기준 깊이는 Tn = max{T0, T1, T2, ..., Td} 이 되도록 하는 n 이다. 여기서 주목할 점은 인트라 DE에서는 동일한 깊이에서의 모든 텍스트 길이를 더한 후 해당 깊이에서의 텍스트 수로 나누었고 반면에 인터 DE에서는 인트라 DE에서 구한 값들을 더한 후 d+1로 나눴다는 점이다. 이는 d = 0 인 경우를 피하기 위함이다.
제7 RWE는 텍스트 길이들의 평균이다. 인트라 DE에서, 동일한 깊이에서의 텍스트 길이들의 평균을 구하며 이를 Tk 로 표현한다. 이어서 인터 DE는 위의 값들 평균을 구한다. 따라서, 기준 폭 R 은 앞서 언급한 평균값이고 기준 깊이는 Tn = max{T0, T1, T2, ..., Td} 이 되도록 하는 n 이다.
도 14의 마지막 RWE는 고정 텍스트 박스 폭(FTW)이라는 점에 유의한다. 이것은 착신 또는 발신 문장들의 크기에 관계없이 텍스트 박스 폭들이 모두 깊이 k에서의 그들 각각의 최대 폭들로 고정되는 사례이다.
이제, TWA가 상이한 레이아웃들에서 어떻게 적용되는지를 설명한다. 예시의 목적을 위해, 기준 폭 방정식에 대해 MoM이 사용된다.
도 15a는 TWA가 GFAL에서 적용된 후의 결과를 도시한다. 예를 들어, SWL-LR이 사용된다.
도 15a의 ①에서, 사용자(즉, 사용자 장치(200))는 사용자 A(즉, 사용자 A의 장치)로부터 문장을 수신하고, 그 문장이 주 문장이 된다. 수신된 문장의 텍스트 길이가 a(수치 값)이고, m보다 작고, 따라서 R(0)=m이 되는 것으로 가정한다.
도 15a의 ②에서, 사용자는 사용자 B로부터 문장을 수신하고, 이 문장은 주 문장의 자식 문장이 된다. 양 텍스트 길이가 a로 동일하고 m보다 작으므로, 따라서 어떤 문장이 기준 폭이 되는지는 중요하지 않은 것으로 가정한다. 여기서, 장치는 사용자 B의 문장을 기준 폭으로 선택하며, 따라서 R(1)=w1=m이다. 이는 텍스트 나머지 텍스트 박스 폭 w0=m이 되게 한다.
도 15a의 ③에서, 사용자는 사용자 C로부터 문장을 수신하고, 이 문장은 사용자 B로부터의 문장의 자식 문장이 된다. 수신된 문장의 텍스트 길이는 다른 것들과 동일하다고 가정한다. 장치는 사용자 C의 문장을 기준 폭으로 선택하며, 따라서 R(2)=w2=m이다. 이는 깊이 0과 1에서의 텍스트 박스 폭이 m이 되게 한다(w0=w1=m).
도 15a의 ④에서, 사용자는 사용자 D로부터 문장을 수신하고, 이 문장은 사용자 C로부터의 문장의 자식 문장이 되어 사용자 C로부터 수신된 문장의 아래에 배치된다. 수신된 문장의 텍스트 길이는 b와 같고 m보다 큰 것으로 가정한다. 장치는 사용자 D의 문장을 기준 폭으로 선택하며, 따라서 R(3)=b이다. 이는 깊이 0, 1 및 2에서의 나머지 텍스트 박스 폭이 b가 되게 한다(w0=w1=w2=b).
도 15a의 ⑤에서, 사용자는 사용자 D로부터의 문장의 자식 문장인, 사용자 E로부터의 문장을 수신하고, 이것은 사용자 D로부터 수신된 문장의 아래에 배치된다. 수신된 문장의 텍스트 길이는 m보다 작은 a인 것으로 가정한다. 장치는 여전히 사용자 D의 문장을 기준 폭으로 선택하며, 따라서 R(3)=b이다. 이는 깊이 0, 1, 2, 4에서의 텍스트 박스 폭이 b가 되게 한다(w0=w1=w2=w4=b).
도 15a의 ⑥에서, 사용자는 주 문장의 자식 문장인, 사용자 F로부터의 문장을 수신하고, 이것은 사용자 E로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이는 b보다 큰 c라고 가정한다. 장치는 사용자 F의 문장을 기준 폭으로 선택하며, 따라서 R(1)=c이다. 이는 나머지 깊이에서의 텍스트 박스 폭이 c로 조정되게 한다(w0=w2=w3=w4=c).
마지막으로, 도 15a의 ⑦에서, 사용자는 사용자 F로부터의 문장의 자식 문장인, 사용자 G로부터의 문장을 수신하고, 이것은 사용자 F로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이는 d와 같고 c와 M보다 큰 것으로 가정한다. M보다 큰 텍스트 박스 폭은 허용되지 않으므로, 장치는 사용자 G의 문장을 기준으로 하되, 따라서 R(2)=M이다. 이는 나머지 깊이에서의 텍스트 박스 폭이 M으로 조정되게 한다(w0=w1=w3=w4=w5=M).
이제, 레이아웃이 그의 가능한 최대 폭에 도달했음에 주목한다.
도 15b는 TWA가 GFAL에서 적용된 후의 결과를 도시한다. 예를 들어, FAL-R이 사용된다. mk d의 위 첨자 d는 mk d가 레이아웃에서 문장의 현재 최저 깊이에 어떻게 의존하는지를 설명하는 데 사용된다는 점에 유의한다. 또한, mdd=m이다.
도 15b의 ①에서, 사용자는 사용자 A로부터 문장을 수신하고, 그 문장은 주 문장이 된다. 수신된 문장의 텍스트 길이는 a(수치 값)이고 m보다 작고, 따라서 R(0)=m0 0이 되는 것으로 가정한다.
도 15b의 ②에서, 사용자는 사용자 B로부터 문장을 수신하고, 이 문장은 주 문장의 자식 문장이 된다. 양 텍스트 길이는 같은 길이이고, 따라서 어떤 문장이 기준 폭이 되는지는 중요하지 않은 것으로 가정한다. 그러나, 장치는 사용자 B의 문장을 기준 폭으로 선택하며, 따라서 R(1)=m1 1이 된다. 이는 텍스트 박스 폭 w0의 값이 m0 1가 되게 한다 (w0=m0 1). 깊이 0에서의 문장의 텍스트 박스 폭은 m0 1로 설정되고, 깊이 1에서의 문장의 텍스트 박스 폭은 m1 1로 설정된다는 점에 유의한다. 주 문장이 유일한 문장(최저 깊이가 0)이고 텍스트 길이가 m보다 작았을 때, 텍스트 박스 폭 w0은 m0 1보다 작은 m0 0과 동일하였다. 이제 최저 깊이가 1이므로, 깊이 0에서의 최소 폭은 m0 1(≠m0 0)으로 된다.
도 15b의 ③에서, 사용자는 사용자 C로부터 문장을 수신하고, 이 문장은 사용자 B로부터의 문장의 자식 문장이 된다. 수신된 문장의 텍스트 길이는 다른 것들과 동일하다고 가정한다. 장치는 사용자 C의 문장을 기준 폭으로 선택하며, 따라서 R(2)=m2 2가 된다. 이는 텍스트 박스 폭 w0=m0 2, w1=m1 2가 되게 한다. 최저 깊이가 2일 때의 각각의 깊이에 대한 최소 폭이 예시된다. 즉, m0 2> m0 1> m0 0 및 m1 2> m1 1이다.
도 15b의 ④에서, 사용자는 사용자 C로부터의 문장의 자식 문장으로 사용자 D로부터의 문장을 수신하고, 이것은 사용자 C로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이는 b와 같고 m3 3보다 큰 것으로 가정한다. 장치는 사용자 D의 문장을 기준 폭으로 선택하며, 따라서 R(3)=b이 된다. 이는 텍스트 박스 폭 w0=3α+b, w1=2α+b 및 w2=α+b가 되게 한다. 최저 깊이가 3일 때의 각각의 깊이의 최소 폭이 예시된다. 즉, m0 3> m0 2> m0 1> m0 0, m1 3> m1 2> m1 1 및 m2 3> m2 2이다.
도 15b의 ⑤에서, 사용자는 사용자 D로부터의 문장의 자식 문장인 사용자 E로부터의 문장을 수신하고, 이것은 사용자 D로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이는 a와 같고 m4 4보다 작은 것으로 가정한다. 장치는 다시 사용자 D의 문장을 기준 폭으로 선택하고, b는 m3 4보다 작으므로, 따라서 기준 폭 R(3)=m3 4로 된다. 이에 따라 텍스트 박스 폭은 w0=m0 4, w1=m1 4, w2=m2 4, w4=m4 4 로 조정된다.
도 15b의 ⑥에서, 사용자는 주 문장의 자식 문장인 사용자 F로부터의 문장을 수신하고, 이것은 사용자 E로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이는 c와 동일하고 b보다 큰 것으로 가정한다. 장치는 사용자 F의 문장을 기준 폭으로 선택하며, 따라서 R(1)=C이다. 이것은 텍스트 박스 폭 w0=α+c, w2=c-α, w3=c-2α, w4=c-3α가 되게 한다.
마지막으로, 도 15b의 ⑦에서, 사용자는 사용자 F로부터의 문장의 자식 문장인 사용자 G로부터의 문장을 수신하고, 이것은 그 아래에 배치된다. 수신된 문장의 텍스트 길이가 d와 같고, 이는 c나 M2보다 크다고 가정한다. 장치는 사용자 G의 문장을 기준 폭으로 선택하며, 따라서 R(2)=M2이다. 이는 텍스트 박스 폭 w0=M0, w1=M1, w3=M2, w3=M3 및 w4=M4가 되게 한다. 최대 폭 Mk는 현재 최저 깊이 d에 의존하지 않는다는 점에 유의한다. 이때, 레이아웃이 그의 가능한 최대 폭에 도달했다.
이제, GVAL에 적용되는 TWA에 초점을 맞춘다. 두 가지 타입의 GVAL, 즉 고정 회전 포인트 GVAL과 부동 회전 포인트 GVAL이 있다. 앞서 언급했듯이, GVAL에서, 정렬 라인 I1 및 I0은 반시계 방향 또는 시계 방향으로 회전한다. 따라서, 이름이 암시하듯이, 고정 회전 포인트에서 회전 포인트는 고정되지만, 부동 회전 포인트에서 포인트는 송수신된 문장의 깊이가 낮아짐에 따라 아래로 시프트된다. 고정 회전 포인트 GVAL에서는 최소 폭 mk d만이 현재 최저 깊이 d에 의존하지만, 부동 회전 포인트 GVAL에서는 최대 폭 Mk d와 최소 폭 mk d 양자가 현재 최저 깊이 d에 의존한다.
도 15c는 TWA가 고정 포인트 GVAL에 적용된 후의 결과를 도시한다. 예를 들어, 고정 포인트 VAL-R이 사용된다. 이 예에서 회전 포인트는 7γ로 고정된다는 점에 유의한다.
도 15c의 ①에서, 사용자는 사용자 A로부터 문장을 수신하고, 문장은 주 문장이 된다. 수신된 문장의 텍스트 길이가 a(수치 값)이고 m보다 작고, 따라서 R(0)=m0 0이 되는 것으로 가정한다.
도 15c의 ②에서, 사용자는 사용자 B로부터 문장을 수신하고, 문장은 주 문장의 자식 문장이 된다. 양 텍스트 길이가 같은 길이이고, 따라서 어떤 문장이 기준 폭이 되는지는 중요하지 않은 것으로 가정한다. 그러나, 장치는 사용자 B의 문장을 기준 폭으로 선택하며, 따라서 R(1)=m1 1이 된다. 이는 텍스트 박스 폭 w0=m0 1이 되게 한다. 최저 깊이가 1이므로, 깊이 0에서의 최소 폭은 m0 1(≠m0 0)이다.
도 15c의 ③에서, 사용자는 사용자 C로부터 문장을 수신하고, 문장은 사용자 B로부터의 문장의 자식 문장이 된다. 수신된 문장의 텍스트 길이는 다른 것들과 동일하다고 가정한다. 장치는 사용자 C의 문장을 기준 폭으로 선택하며, 따라서 R(2)=m2 2가 된다. 이는 텍스트 박스 폭 w0=m0 2, w1=m1 2가 되게 한다. 최저 깊이가 2일 때의 각각의 깊이에 대한 최소 폭이 예시된다. 즉, m0 2>m0 1>m0 0 및 m1 2>m1 1이다.
도 15c의 ④에서, 사용자는 사용자 C로부터의 문장의 자식 문장인 사용자 D로부터의 다른 문장을 수신하고, 이것은 사용자 C로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이가 b와 동일하고 m3 3보다 큰 것으로 가정한다. 장치는 사용자 D의 문장을 기준 폭으로 선택하며, 따라서 R(3)=b이다. 이는 깊이 0, 1, 2 및 3에서의 텍스트 박스 폭이 정렬 라인 L1과 L0 간의 길이와 같아지게 한다. 각각의 나머지 텍스트 박스 폭 w0, w1 및 w2는 삼각법 특성들을 사용하여 계산된다.
도 15c의 ⑤에서, 사용자는 사용자 D로부터의 문장의 자식 문장인 사용자 E로부터의 문장을 수신하고, 이것은 사용자 D로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이는 a와 같고 m4 4보다 작은 것으로 가정하며, 텍스트 "DEFG"의 텍스트 길이(=b)가 m3 4 미만이라고 가정한다. 장치는 다시 사용자 D의 문장을 기준 폭으로 선택하지만, b는 m3 4보다 작으므로 R(3)=m3 4이다. 이는 텍스트 박스 폭 w0=M0 4, w1=m1 4, w2=m2 4, w3=m3 4 및 w4=m4 4가 되게 한다. 현재 최저 깊이가 4일 때의 각 텍스트 박스의 최소 폭들은 삼각법 특성들에 의해 미리 정해진다.
도 15c의 ⑥에서, 사용자는 주 문장의 자식 문장인 사용자 F로부터의 문장을 수신하고, 이것은 사용자 E로부터 수신된 문장 아래에 배치된다. 다른 정렬 라인(1500)인이 레이아웃에 그려진다. 이 새 정렬 라인의 회전 포인트는 (제1 회전 포인트가 사용자 B의 문장에서 5 단위 떨어져 있는 것처럼) 수신된 문장에서 5 단위 떨어져 있다. 수신된 문장의 텍스트 길이가 c와 같고 b보다 큰 것으로 가정한다. 장치는 사용자 F의 문장을 기준 폭으로 선택하며, 따라서 R(1)=C이다. 이는 나머지 깊이 0, 1, 2, 3, 4에서의 텍스트 박스 폭이 정렬 라인 L1과 L0 간의 길이와 같아지게 한다. 다시 한번, 각각의 나머지 텍스트 박스 폭은 삼각법 특성들에 의해 계산된다.
마지막으로, 도 15c의 ⑦에서, 사용자는 사용자 F로부터의 문장의 자식 문장인 사용자 G로부터의 문장을 수신하고, 이것은 그 아래에 배치된다. 수신된 문장의 텍스트 길이가 d와 같고 이는 c와 M2보다 크다고 가정한다. 장치는 사용자 G의 문장을 기준 폭으로 선택하며, 따라서 R(2)=M2가 된다. 이는 나머지 텍스트 박스 폭 w0=M0, w1=M1, w3=M3 및 w4=M4가 되게 한다. 레이아웃이 그의 가능한 최대 폭에 도달했음에 유의한다.
도 15d는 TWA가 부동 포인트 GVAL에 적용된 후의 결과를 도시한다. 이 예에서는 부동 포인트 VAL-R을 사용한다. 이 예에서 회전 포인트는 처음에 4γ에 위치한다는 점에 유의한다.
도 15d의 ①에서, 사용자는 사용자 A로부터 문장을 수신하고, 문장은 주 문장이 된다. 수신된 문장의 텍스트 길이가 a(수치 값)이고 m보다 작고, 따라서 R(0)=m0 0이 되는 것으로 가정한다.
도 15d의 ②에서, 사용자는 사용자 B로부터 문장을 수신하고, 문장은 주 문장의 자식 문장이 된다. 회전 포인트는 1 단위 아래로 이동하고 새로운 정렬을 형성한다. 양 텍스트 길이가 같은 길이이고, 따라서 어떤 문장이 기준 폭이 되는지는 중요하지 않은 것으로 가정한다. 그러나, 장치는 사용자 B의 문장을 기준 폭으로 선택하며, 따라서 R(1)=m1 1이 된다. 이는 텍스트 박스 폭 w0=m0 1이 되게 한다. 최저 깊이가 1이므로 깊이 0에서 최소 폭은 m0 1(> m0 0)이다.
도 15d의 ③에서, 사용자는 사용자 C로부터 문장을 수신하고, 문장은 사용자 B로부터의 문장의 자식 문장이 된다. 회전 포인트는 1 단위 아래로 이동하고 새로운 정렬을 형성한다. 수신된 문장의 텍스트 길이가 다른 것들과 동일하다고 가정한다. 장치는 사용자 C의 문장을 기준 폭으로 선택하며, 따라서 R(2)=m2 2가 된다. 이는 텍스트 박스 폭 w0=m0 2 및 w1=m1 2가 되게 한다. 최저 깊이가 2일 때의 각각의 깊이에 대한 최소 폭이 예시된다. 즉, m0 2>m0 1>m0 0 및 m1 2> m1 1이다.
도 15d의 ④에서, 사용자는 사용자 C로부터의 문장의 자식 문장인 사용자 D로부터의 다른 문장을 수신하고, 이것은 사용자 C로부터 수신된 문장의 아래에 배치된다. 회전 포인트가 1 단위 아래로 이동하고 새로운 정렬을 형성한다. 수신된 문장의 텍스트 길이가 b와 같고 m3 3보다 크다고 가정한다. 장치는 사용자 D의 문장을 기준 폭으로 선택하며, 따라서 R(3)=b가 된다. 이는 깊이 0, 1, 2 및 3에서의 텍스트 박스 폭이 정렬 라인 L1과 L0 간의 길이와 같아지게 한다. 각각의 나머지 텍스트 박스 폭 w0, w1 및 w2는 삼각법 특성들을 사용하여 계산된다.
도 15d의 ⑤에서, 사용자는 사용자 D로부터의 문장의 자식 문장인 사용자 E로부터의 문장을 수신하고, 이것은 사용자 D로부터 수신된 문장의 아래에 배치된다. 회전 포인트가 1 단위 아래로 이동하고 새로운 정렬을 형성한다. 수신된 문장의 텍스트 길이가 a와 같고 m4 4보다 작다고 가정하며, 텍스트 "DEFG"의 텍스트 길이(=b)가 m3 4 미만이라고 가정한다. 장치는 다시 사용자 D의 문장을 기준 폭으로 선택하지만, b는 m3 4보다 작으므로 R(3)=m3 4이다. 이는 나머지 텍스트 박스 폭 w0=m0 4, w1=m1 4, w2=m2 4 및 w4=m4 4가 되게 한다. 현재 최저 깊이가 4일 때의 각 텍스트 박스의 최소 폭들은 삼각법 특성들에 의해 미리 정해진다.
도 15d의 ⑥에서, 사용자는 주 문장의 자식 문장인 사용자 F로부터의 문장을 수신하고, 이것은 사용자 E로부터 수신된 문장의 아래에 배치된다. 문장이 새로운 최저 깊이에 있지 않으므로 회전 포인트가 아래로 이동하지 않는다. 그러나, 다른 정렬 라인(1502)이 레이아웃에 그려진다. 이 정렬 라인의 회전 포인트는 (제1 회전 포인트가 사용자 B의 문장에서 5 단위 떨어져 있는 것처럼) 수신된 문장에서 5γ만큼 떨어진다. 수신된 문장의 텍스트 길이가 c와 같고 b보다 큰 것으로 가정한다. 장치는 사용자 F의 문장을 기준 폭으로 선택하며, 따라서 R(1)=c이다. 이는 나머지 깊이 0, 2, 3, 4에서의 텍스트 박스 폭이 정렬 라인 L1과 L0 간의 길이와 같아지게 한다. 다시, 각각의 나머지 텍스트 박스 폭은 삼각법 특성들에 의해 계산된다.
마지막으로, 도 15d의 ⑦에서, 사용자는 사용자 F로부터의 문장의 자식 문장인 사용자 G로부터의 문장을 수신하고, 이것은 사용자 F로부터 수신된 문장 아래에 배치된다. 회전 포인트가 아래로 이동하지 않는다. 수신된 문장의 텍스트 길이가 d와 같고 c와 m2 4보다 큰 것으로 가정한다. 장치는 사용자 G의 문장을 기준 폭으로 선택하며, 따라서 R(2)=m2 4가 된다. 이는 나머지 텍스트 박스 폭 w0=m0 4, w1=m1 4, w3=m3 4, w4=m4 4가 되게 한다. 레이아웃이 그의 가능한 최대 폭에 도달했음을 유의한다.
또한, 사용자가 깊이 5의 새 문장을 수신하면, 최대 폭 Mi 5(i=1~5)는 Mj 4(j=1~4)와 다를 것이다. 깊이 d의 값에 관계없이 M0 5=M0 4임을 유의한다. 따라서, 일반적으로, Mk a≥Mk b가 되며, a> b> 0이다. 따라서, 부동 포인트 GVAL의 경우, 최대 폭 Mk d는 현재 최저 깊이 d에 의존한다.
도 15e는 TWA가 부동 포인트 GMAL에 적용된 후의 결과를 도시한다. 예를 들어, 부동 포인트 MAL-R을 사용한다. 이것은 부동 포인트 VAL-R이 MAL-R의 VAL 부분에 사용된다는 것을 의미한다.
도 15e의 ①에서, 사용자는 사용자 A로부터 문장을 수신하고, 문장은 주 문장이 된다. 수신된 문장의 텍스트 길이가 a(수치 값)이고 m보다 작고, 따라서 R(0)=m0 0이 되는 것으로 가정한다.
도 15e의 ②에서, 사용자는 사용자 B로부터 문장을 수신하고, 문장은 주 문장의 자식 문장이 된다. 회전 포인트는 이제 새 문장의 좌측 중점에 있으며 새 정렬을 형성한다. 양 텍스트 길이가 같은 길이이고, 따라서 어떤 문장이 기준 폭이 되는지는 중요하지 않은 것을 가정한다. 그러나, 장치는 사용자 B의 문장을 기준 폭으로 선택하며, 따라서 R(1)=m1 1이 된다. 이는 나머지 텍스트 박스 폭 w0=m0 1이 되게 한다. 양 텍스트의 텍스트 길이가 m0 1v 및 m1 1v보다 작기 때문에 레이아웃은 VAL-R 모드에 있다(위 첨자 v는 레이아웃이 VAL 모드에 있음을 나타낸다).
도 15e의 ③에서, 사용자는 사용자 C로부터 문장을 수신하고, 문장은 사용자 B로부터의 문장의 자식 문장이 된다. 회전 포인트는 이제 새로운 문장의 좌측 중점에 있고 새로운 정렬을 형성한다. 수신된 문장의 텍스트 길이가 다른 것들과 동일하다고 가정한다. 장치는 사용자 C의 문장을 기준 폭으로 선택하며, 따라서 R(2)=m2 2v이다. 이는 나머지 텍스트 박스 폭 w0=m0 2v 및 w1=m1 2v가 되게 한다. 모든 텍스트의 텍스트 길이가 m0 2v, m1 2v 및 m2 2v보다 작기 때문에 레이아웃은 여전히 VAL-R 모드에 있다.
도 15e의 ④에서, 사용자는 사용자 C로부터의 문장의 자식 문장인 사용자 D로부터의 다른 문장을 수신하고, 이것은 사용자 C로부터 수신된 문장 아래에 배치된다. 회전 포인트는 이제 새로운 문장의 좌측 중간에 있고, 새로운 정렬을 형성한다. 수신된 문장의 텍스트 길이가 b와 같고 m3 3v보다 큰 것으로 가정한다. 장치는 사용자 D의 문장을 기준 폭으로 선택하며, 따라서 R(3)=b가 된다. b가 m3 3v보다 크기 때문에 레이아웃은 FAL-R 모드로 변경된다는 점에 유의한다. 이는 나머지 텍스트 박스 폭 w0=3α+b, w1=2α+b 및 w2=α+b가 되게 한다.
도 15e의 ⑤에서, 사용자는 사용자 D로부터의 문장의 자식 문장인 사용자 E로부터의 문장을 수신하고, 이것은 사용자 D로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이가 a와 같고, m4 4v보다 작다고 가정하며, 사용자 D로부터의 텍스트가 m3 4v보다 작다고 가정한다. 이는 레이아웃이 VAL-R 모드로 변경되게 하며, 회전 포인트는 사용자 E로부터의 문장의 좌측 중점에 배치된다. 장치는 다시 사용자 D의 문장을 기준 폭으로 선택하지만, b는 m3 4v보다 작으므로 R(3)=m3 4v가 된다. 이는 나머지 텍스트 박스 폭 w0=m0 4v, w1=m1 4v, w2=m2 4v 및 w4=m4 4v가 되게 한다.
도 15e의 ⑥에서, 사용자는 주 문장의 자식 문장인 사용자 F로부터의 문장을 수신하고, 이것은 사용자 E로부터 수신된 문장 아래에 배치된다. 수신된 문장의 텍스트 길이는 c와 동일하고 b보다 큰 것으로 가정한다. 따라서, 이것은 레이아웃이 FAL-R 모드로 변경되게 한다. 새 문장 아래에 빈 텍스트 박스가 있다는 점에 유의한다. 이러한 "보이지 않는" 텍스트 박스는 문장이 "가상" 문장에서 오는 선형 정렬 라인(1504)과 정렬됨을 예시하기 위한 것이다. 장치는 사용자 F의 문장을 기준 폭으로 선택하며, 따라서 R(1)=c 이다. 이것은 텍스트 박스 폭 w0=α+c, w2=c-α, w3=c-2α 및 w4=c-3α가 되게 한다.
마지막으로, 도 15e의 ⑦에서, 사용자는 사용자 F로부터의 문장의 자식 문장인 사용자 G로부터의 문장을 수신하고, 이것은 사용자 F로부터 수신된 문장의 아래에 배치된다. 수신된 문장의 텍스트 길이는 d와 같으며 c와 M2보다 큰 것으로 가정한다. 이것은 레이아웃이 여전히 FAL-R 모드에 있게 한다. 장치는 사용자 G의 문장을 기준 폭으로 선택하며, 따라서 R(2)=m2 4f가 된다. 이는 텍스트 박스 폭 w0=M0 4f, w1=m1 4f, w3=m3 4f 및 w4=M4 4f가 되게 한다. 레이아웃이 그의 가능한 최대 폭에 도달했음에 유의한다.
TWA는 여러 상황에서 실행가능하다.
제1 상황은 사용자가 그의 장치를 회전하는 경우이다. 대부분의 장치는 직사각형이며, 대부분 사용자들은 세로 모드로 장치를 사용한다고 가정할 수 있다. 그러나, 사용자는 가로 모드가 되도록 장치를 회전시킬 수 있다. 이것은 수평 공간이 증가하기 때문에 텍스트 박스 폭의 디폴트 최대 폭 및 최소 폭을 늘릴 수 있음을 의미한다. 이 프로세스를 회전시의 TWA(TWA upon Rotation, 이하 TWA-R)라고 한다.
제2 상황은 사용자가 다른 사용자와 문장을 주고 수신하는 경우이다. 이 경우, 새 문장의 텍스트 길이가 이미 존재하는 텍스트 길이들의 풀에 추가되고, 프로세스가 R(k)를 결정한다. 이 프로세스를 송수신시의 TWA(TWA upon Send and Receive이하 TWA-SR)라고 한다.
제3 상황은 사용자가 일부 문장을 표시하지 않기로 결정하는 경우이다. 이 경우, 프로세스는 R(k)를 다시 계산하고, 사용자가 표시되지 않은 것을 표시하기로 결정할 때 그의 원래 뷰로 다시 전환한다. 이 프로세스를 축소 및 확장시의 TWA(TWA upon Collapse and Expand, 이하 TWA-CE)라고 한다.
제4 상황은 사용자가 문장을 삭제하는 경우이다. 이 경우, 삭제된 문장의 텍스트 길이는 텍스트 길이 풀에서 제외되고, R(k)는 다시 계산된다. 이 프로세스를 삭제시의 TWA(TWA upon Delete, 이하 TWA-D)라고 한다.
마지막으로, 최종 상황은 사용자가 기존 문장을 수정하는 경우이다. 이 경우, 기존 텍스트를 수정하면 텍스트 길이에 영향을 줄 수 있으며, 프로세스가 R(k)를 다시 계산한다. 이 프로세스를 수정시의 TWA(TWA upon Modify, 이하 TWA-M)이라고 한다.
지금까지 설명된 바와 같이, TWA가 RMS에서 중요한 역할을 한다는 것을 알 수 있다. 이 메커니즘은 레이아웃을 동기화되고 일관되게 유지하며, 이는 RMS의 목적 중 하나이다.
이제, 회전시의 TWA(TWA-R)라는 특징을 설명한다. 지금까지는, 레이아웃이 세로 모드에 있는 물리적 스크린 상에 표시되는 것으로 가정했다. 사용자가 그의 장치를 가로 모드로 돌릴 때마다, 장치는 M 및 m의 다른 값에 기초하여 TWA를 다시 실행할 수 있다. 따라서, TWA-R에서, 회전이라는 용어는 세로 모드에서 가로 모드로 또는 그 반대로 전환하는 것을 의미한다. 장치는 회전시 TWA를 다시 실행하도록 설정될 수 있다.
도 16a는 2개의 상이한 보기 레이아웃을 도시하지만, 이들은 상이한 모드로 방금 표시된 동일한 장치 상의 동일한 레이아웃들이다. 숫자들은 각각의 문장(즉, 각각의 텍스트 메시지) 내의 텍스트의 텍스트 길이를 나타낸다는 점에 유의한다.
도 16a의 ①의 레이아웃은 세로 모드이며, 도 16a의 ②의 레이아웃은 가로 모드이다. 세로 모드의 M 및 m 의 값은 가로 모드의 M* 및 m*의 값보다 작기 때문에, 도 16a의 ②의 문장은 도 16a의 ①의 문장보다 넓다. 예를 들어, 문장(1600)의 텍스트 길이는 100이고, 세로 모드에서 텍스트는 3개의 라인으로 분할된다. 반면에, 1602에 표시된 바와 같이, 장치가 가로 모드일 때 텍스트는 하나의 라인에 잘 맞을 수 있다.
도 16b 및 도 16c는 도 13a 및 도 13b와 유사한 2개의 흐름도를 도시한다. 도 16b에서, 장치가 세로 모드에서 가로 모드로의 회전을 검출할 때마다, TWA의 프로세스는 상이한 최대 폭 Mn * 및 최소 폭 mn * 값으로 실행된다. 도 16c에서, 장치가가로 모드에서 세로 모드로의 회전을 검출할 때마다, TWA의 프로세스가 실행되지만, 상이한 최대 폭 Mn 및 최소 폭 mn 값으로 실행된다.
도 17a-17c는 본 발명의 도 1 내지 16c에 제시된 적어도 하나의 예시적인 실시예에 따른 다양한 구조화 방식으로 인스턴트 메시지들을 조직화하고 표시하는 흐름도들이다.
장치(200)는 I/O 인터페이스(306) 및 네트워크 통신 인터페이스(302)를 통해 복수의 사용자 장치(예를 들어, 채팅 세션 또는 그룹 멤버 전용으로 설정된 그룹 텍스트 모드에 참여하기 위한 사용자 장치 그룹)와 통신한다. 장치(200)가 예를 들어 채팅 세션에 참여하기 위해 그룹 멤버들의 장치들 사이에서 텍스트 메시지들(이미지 메시지들 및/또는 비디오 메시지들을 포함함)(이에 제한되지 않음)을 수신 및/또는 송신할 때, 장치(200)의 제어기(106)의 하나 이상의 프로세서는 계층 구조화 방식으로 디스플레이(예컨대, 터치스크린 디스플레이) 상에 메시지들을 조직화하고 표시하도록 구성된다. 그렇게 하기 위해, 본 발명은 도 8a 및 8b 및 도 9a-11b에서 언급된 바와 같이 메시지들(즉, 발신 메시지들 및 착신 메시지들)을 조직화하고 표시하는 데 사용될 파라미터들을 정의한다. 즉, 파라미터들(예로서, 도 8b의 사용자 ID, 송신 일시 및 넘버링)은 메시지들 각각이 주 메시지 또는 주 메시지로부터 유래하는 서브메시지인지를 식별하기 위한 정보와 관련된 파라미터들(이하, 단지 설명의 편의를 위해 "메시지 파라미터들"로 지칭됨)을 포함한다. 프로세서가 메시지(즉, 채팅 세션 동안의 발신 메시지 또는 착신 메시지)의 발생 이벤트를 검출할 때, 프로세서는 상기 메시지로부터 메시의 파라미터들을 추출하여, 메시지 파라미터들 중 각각의 파라미터를 분석함으로써 메시지가 주 메시지인지 또는 서브 메시지인지를 식별한다.
또한, 프로세서는 어떻게 계층 구조화 방식으로 메시지들을 조직화하거나 표시할지에 대한 정보를 포함하는 파라미터들(이하, 단지 설명의 편의상 "레이아웃 파라미터들"로 지칭됨)을 정의한다. 예를 들어, "레이아웃 파라미터들"은 하나 이상의 정렬 라인에 대한 파라미터들(예를 들어, 도 9a-11b의 제1 정렬 라인 l1 및 제2 정렬 라인 l0, 들여쓰기 파라미터(즉, 깊이 D와 d)), 각각의 정렬 라인 파라미터의 최소 폭 및 최소 폭, 기울기 파라미터들(예를 들어, 포인트 P1 및 P0은 물론, 각도 Δ1 및 Δ0)을 포함한다. 프로세서는 예를 들어 본 발명의 도 9a-11b에 도시된 바와 같이 메시지 파라미터들 및 레이아웃 파라미터들로 다양한 조합들을 설정함으로써 메시지들에 대한 다양한 레이아웃 모드들을 정의한다. 여기서, 간략한 설명을 위해, 메시지 파라미터들 및 레이아웃 파라미터들에 대한 각각의 파라미터는 도 9a-11b에서 예시적으로 전술한 바와 같이 여기에 통합된다.
도 17a는 장치(200)의 사용자가 채팅 세션 동안 교환된 발신 및 착신 메시지들을 조직화하고 표시하기를 원하는 다양한 레이아웃 모드 중에서 레이아웃 모드를 선택하고, 프로세서가 선택된 레이아웃 모드를 설정하는 흐름도를 도시한다(S1700).
언급한 바와 같이, 사용자가 제1 메시지(또는 주 문장)를 송신할 때마다, ID(사용자 ID 및 송신 일시) 및 넘버링이 실제 텍스트 메시지와 함께 송신된다. 제1 메시지의 경우, 넘버링은 단순히 0이며, 이것은 메시지가 제1 메시지임을 나타낸다. 그러나, 사용자가 제1 메시지(또는 임의의 서브 메시지)에 응답할 때, 장치(200)는 단지 새로운 넘버링을 생성하고 그것을 기존 ID에 첨부한다. 마지막으로, 이 새로운 정보가 다른 사용자(들)에게 송신된다.
도 17b는 다른 사용자(들)에게 메시지를 송신하는 방법을 도시하는 흐름도이다. 사용자는 제1 메시지를 송신하거나 기존 메시지에 응답한다(S1702). 전자의 경우, ID(사용자 ID + 메시지 송신 일시)와 넘버링이 생성된다. 후자의 경우, 사용자가 응답하고 있는 메시지에 기초하여, 새 넘버링만 생성된다. 또한, 다른 관련 파라미터들이 생성된다(S1704). 최종 단계에서, 상기 언급된 파라미터들은 저장되어 다른 사용자들(즉, 다른 사용자들의 장치들)에게 송신된다(S1706).
도 17c는 검출된 메시지를 처리하는 방법을 도시하는 흐름도이다. 메시지가 발생하면, 프로세서는 메시지를 검출하고, 프로세서는 메시지로부터 메시지 파라미터들을 추출하여, 추출된 메시지 파라미터들의 정보를 분석함으로써 메시지의 속성(또는 특성들), 즉 메시지가 제1 메시지 또는 제1 메시지에 대한 서브메시지인지를 식별한다(S1708). 프로세서는 발신 또는 착신 메시지가 순차적으로 발생할 때마다 기준 폭 및 기준 깊이를 결정한다(S1710). 프로세서는 레이아웃에서 기존 메시지(들)의 텍스트 박스의 모든 폭을 결정하고, 검색된 메시지의 텍스트 박스 폭을 결정한다. 그 다음, 프로세서는 레이아웃 내의 기존 텍스트 박스의 폭을 재조정한다(S1712). 마지막으로, 프로세서는 검출된 메시지를 포함하는 레이아웃을 계층 구조화 방식으로 재조직화한다(S1714).
프로세서는 선택된 레이아웃 모드에서 이전에 설정된 각각의 파라미터 및 결정된 기준 폭 및 기준 깊이에 기초하여 채팅 세션 동안 현재 발생하는 발신 또는 착신 메시지들을 조직화한다. 결정된 기준 폭 및 결정된 기준 깊이의 텍스트 박스 크기에 기초하여, 프로세서는 표시될 발신 또는 착신 메시지의 텍스트 박스 크기를 결정한다. 선택된 레이아웃 모드에 대해 이전에 설정된 레이아웃 파라미터들에 기초하여, 프로세서는 제1 정렬 라인 파라미터의 최대 폭 및 제2 정렬 라인 파라미터의 최소 폭, 들여쓰기 파라미터 및 기울기 파라미터들에서 설정되는 바와 같이 각각의 메시지의 텍스트 박스 크기(즉, 폭)가 결정되거나 조정되는 방식으로 계층 구조화 방식으로 메시지들을 표시한다.
예를 들어, 도 9a에서, 기울기 파라미터들이 고정될 때, 발신 또는 착신 메시지들의 텍스트 박스들은 제1 정렬 라인 파라미터 I1의 최대 및 최소 값들 및 제2 정렬 라인 파라미터 I0의 최대 폭 및 최소 폭에 의해 지정된 범위로 조직화되고 표시된다. 즉, 도 9a에서, 각각의 메시지의 텍스트 박스 폭은 제1 및 제2 정렬 파라미터 각각의 최대 폭 및 최소 폭에 지정된 범위로 조직화되고 표시되며, 그 범위는 또한 기울기 파라미터들에서 설정된 고정 각도(즉, 포인트 P1 및 P0, Δ1 및 Δ0)로 지정된다. 다른 예로서, 도 9b에서, 기울기 파라미터들이 고정될 때, 발신 또는 착신 메시지들의 텍스트 박스들은 제1 정렬 라인 파라미터 I1의 최대 폭 및 최소 폭 및 제2 정렬 라인 파라미터 I0의 최대 폭 및 최소 폭에 의해 지정된 범위로 조직화되고 표시된다. 즉, 도 9b에서, 각각의 메시지의 텍스트 박스 폭은 제1 및 제2 정렬 파라미터들의 값들에서 지정된 범위로 조직화되고 표시되며, 그 범위는 또한 기울기 파라미터들에서 설정된 고정 각도(즉, 포인트 P1 및 P0, △ 1 및 Δ0)로 지정된다. 또한, 도 9b에서, 프로세서는 이전 범위와 평행한 패밀리 범위 내에서 각각의 분기 메시지(또는 분류된 메시지들에 대한 부모 메시지)로부터 분류되거나 기인하는 메시지들을 조직화하고 표시하며, 그 패밀리 범위는 좌측 시프트된 정렬 라인 I1 및 우측 시프트된 정렬 라인 I0에 의해 설정된다.
예를 들어, 도 10a에서, 기울기 파라미터 포인트(Δ1 및 Δ0)가 다양하게 설정될 때, 발신 또는 착신 메시지들의 텍스트 박스들은 제1 정렬 라인 파라미터 I1의 최대 폭 및 최소 폭 및 제2 정렬 라인 파라미터 I0의 최대 폭 및 최소 폭에 의해 각도 변경된 범위로 조직화되고 표시되며, 제1 및 제2 정렬 라인들은 기울기 파라미터들에서 설정된 각도(즉, Δ1 및 Δ0)로 포인트 P의 중심에 각각의 기울기를 갖는다. 여기서, 프로세서는 미리 설정된 제1 및 제2 정렬 라인 파라미터들의 최대 폭 및 최소 폭 내에서 시계 방향 또는 반시계 방향으로 각각 회전하도록 제1 및 제2 정렬 라인들을 제어한다.
예시적인 실시예에서, 프로세서는 도 9a-9b에 도시된 바와 같이 좌측 또는 우측 방향으로 제1 및 제2 정렬 라인을 선형으로 시프트하여 각각의 메시지의 텍스트 박스 폭을 조정하거나 크기를 조절함으로써 다른 계층 구조화 방식으로 메시지들을 재조직화하고 표시한다.
다른 예시적인 실시예에서, 프로세서는 도 10a-11b에 도시된 바와 같이 제1 및 제2 정렬 라인을 시계 방향 또는 반시계 방향으로 각도 시프트하여 각각의 메시지의 텍스트 박스 폭을 조정하거나 크기를 조절함으로써 메시지들을 다른 계층 구조화 방식으로 재조직화하고 표시한다.
다수의 레이아웃을 정의했으므로, 장치 상에서 레이아웃 및 문장(들)을 관리하는 메커니즘이 있어야 한다는 것은 명백하다. 이것은 사용자가 레이아웃을 관리할 수 있게 해주는 본 발명의 특징들에 의해 수행된다. 이들을 문장(들)의 표시 방식에 대한 명령(들)(command(s))이라고 하며, 예시적으로 18개의 명령이 제시된다. 그들을 제시하기 전에, 장치가 이러한 명령들을 사용자에게 제공하는 방법이 많이 있음을 주목한다. 다르게 말하면, 사용자는 상이한 방법으로 명령들에 "액세스"할 수 있다. 장치가 명령들을 제공하는 방법을 크게 3개의 방법으로 분류한다.
제1 방법은 내부화 명령들(internalized commands)(즉, 내부화된 타입이나 상태의 명령들)이라고 한다. 이 방법에서는 명령들이 사용자에게 표시되지 않는다. 사용자는 그가 레이아웃이나 문장에 적용할 수 있는 명령 세트를 보기 위해 필요한 단계를 수행해야 한다.
도 18a는 내부화 명령들을 도시한다. 도 18a의 ①에서, 사용자는 문장 x.1에 미리 정의된 손 제스처(또는 미리 정의된 사용자 제스처, 예를 들어, 디스플레이 상에서의 손가락 터치, 움직임, 태핑 등)를 적용한다. 장치가 이 손 제스처를 검출하면, 장치는 1800에 도시된 바와 같이 명령 세트를 표시한다. 이 영역을 프롬프트 명령 표시 영역(prompted command display area)(1800)이라고 한다. 도 18a의 ②에 도시된 바와 같이, 장치가 특정 문장에 미리 정의된 손 제스처를 적용하면, 장치는 문장의 내부 문장을 검사하고, 모든 명령(Com1, Com2 등으로 표시됨)을 프롬프트 명령 표시 영역에 표시한다. 사용자는 명령들을 보고, 그가 적용하려는 의도한 명령에 손 제스처를 적용한다.
제2 방법은 외부화 명령들(externalized commands)(즉, 외부화된 타입이나 상태의 명령들)이라고 한다. 이 방법에서는 각각의 문장 상에 명령들이 즉시 표시된다. 따라서, 사용자는 명령을 보고 바로 적용할 수 있다.
도 18b는 외부화 명령들을 도시한다. 도 18b의 ①에 도시된 바와 같이, 명령들은 각각의 문장 상에 바로 표시된다. 도면에서, 모든 명령은 각 문장의 우측 부분에 표시된다. 명령들이 표시되는 영역을 명령 표시 영역(command display area)(1802)이라고 한다. 따라서, 외부화 명령들에서, 장치는 명령이 레이아웃에 적용될 때마다 각각의 문장의 내부 상태를 계속 추적하고, 각 문장에 대해 모든 적용 가능한 명령들(COM1, COM2 등으로 표시됨)을 업데이트하거나 갱신한다. 때로는, 명령 표시 영역에 적용 가능한 명령들을 열거하는 대신, 심벌들을 사용하여, 표시된 명령들을 간단히 대체할 수 있다. 이 아이디어는 도 18b의 ②에 표시된다. 이 심벌들에 대해서는 상세히 다루지 않고, 이 심벌들의 위치들만 1804, 1806 및 1808로 표시하였다. 이 각각의 심벌은 특정 명령을 대체한다.
마지막으로, 마지막 방법은 맞춤화 명령들(customized commands)(즉, 맞춤형 타입이나 상태의 명령들)이라고 한다. 이 방법에서는 상이한 손 제스처들이 명령을 나타낸다. 따라서, 사용자는 특정 명령을 나타내는 특정(맞춤화된) 손 제스처를 미리 "알고" 있다고 가정한다. 명령이 맞춤화되는 경우, 명령은 어떠한 방식으로 표시되지 않을 것이다.
도 18c는 맞춤화 명령들을 도시한다. 도면은 맞춤화된 손 제스처가 나타내는 명령을 적용하기 위해 사용자가 문장에 맞춤화된 손 제스처를 적용하는 것을 나타낸다.
요컨대, 내부화 및 외부화 명령들의 아이디어는 기본적으로 동일하지만, 내부화 명령들에서 사용자는 적용 가능한 명령들을 실제로 보기 위한 추가 단계를 취해야 하는 반면, 외부화 명령들에서는 이러한 명령들이 즉시 이용될 수 있다. 맞춤화 명령들의 아이디어는 다른 2개와 다르며, 여기서는 특정 명령이 특정(맞춤화된) 손 제스처에 의해 레이아웃에 적용될 수 있다.
18개의 상이한 명령에 대한 상세한 설명을 제공하기 전에, 먼저 문장이 어떻게 송신되는지를 설명한다.
도 19는 사용자 B가 다른 사용자들에게 문장을 송신하는 것을 도시한다. 사용자 B가 사용자 A, 사용자 C 및 사용자 D의 세 명의 다른 사용자에게 문장을 송신한다고 가정한다.
도 19의 ①에서, 사용자는 RMS 화면 상의 "메시지 생성" 버튼에 손 제스처를 적용하여 메시지 생성을 시작한다. 소프트웨어는 사용자 B로 하여금 그가 원하는 다른 사용자들에게 메시지를 송신하는 것을 가능하게 한다. 그는 사용자 A, 사용자 C 및 사용자 D를 추가한다.
도 19의 ②에서, 사용자 B가 만든 "채팅 룸"에 참여하고 있는 모든 사용자가 1900에 열거된다. 또한, 사용자 B가 메시지를 생성하는 것을 허용하는 소프트 키보드(1902)가 사용자에게 표시된다. 사용자는 텍스트 입력 영역(1904)에서 텍스트를 생성하며 1906은 커서이다. 사용자는 메시지 생성을 끝내면 송신 버튼(1908)에 손 제스처를 적용한다.
도 19의 ③에서, 송신 버튼 상의 손 제스처를 검출하면, 장치는 사용자의 장치에 사용자의 텍스트(1910)를 표시하고, 다른 3명의 사용자에게 텍스트 및 기타 정보를 송신한다. 다른 세 명의 사용자는 도면에서와 같이 동일 메시지를 수신한다. 문장 내에서, 문장을 송신한 사용자(문장의 소유자) 및 송신 시간이 문장에 표시된다.
이제, 레이아웃에 응답(Reply) 명령이 어떻게 적용되는지를 설명한다.
사용자가 문장에 응답하는 상황 및 그것이 어떻게 행해지는지를 고찰한다. 응답한다고 할 때, 이것은 수신된 문장에 대응하거나 회신하는 것을 의미한다. 수신 또는 송신된 문장이 없으면 응답 명령이 존재할 수 없다는 점을 강조한다. 또한, 응답 명령은 사용자가 어떤 문장에 응답하려고 의도하는지를 지정하지 않는다면 프롬프트되지 않는다. 응답하는 행위는 송신하는 것과 동일하지만 고유의 의미를 갖는다. 이것은 사용자가 응답하고 있는 문장과 개념적으로 관련된다. 응답한다고 할 때, 이름이 암시하듯이, 이것은 기존의 문장에 대한 응답이며 가장 중요한 점은 응답 명령을 적용하여 생성된 문장임을 강조한다. 응답 명령은 채팅 세션에서 다른 사용자들로부터 수신한 특정 메시지에 대한 응답으로 메시지를 보내기 위해 프로세서로 하여금 메시지 작성창을 활성화시키도록 하며, 이는 상기 특정 메시지가 선택된 것으로 검출될 때 이루어진다. 응답 명령의 메시지 작성창은 특정 메시지에 응답하는 메시지의 만료 일자와 만료 시간을 설정하고 또한 수신자가 그에 대한 응답 메시지를 보낼수 있는지 여부를 설정하기 위한 파라미터(또는, 옵션)를 포함한다. 여기서, 메시지 작성창은 채팅 세션에 참여하거나 초대 받은 다른 사용자에게 초기 메시지를 보내거나 또는 다른 사용자로부터 이전에 수신한 메시지에 응답하여 메시지를 보내기 위해 활성화된다. 응답 명령은 프로세서로 하여금 채팅 세션에서 다른 사용자들로부터 수신한 특정 메시지에서 파라미터를 추출하도록 하며, 추출된 파라미터들은 다른 사용자의 아이디 정보, 특정 메시지의 송신 일시 정보, 메시지의 우선 순위 정보, 메시지의 순서에 대한 넘버링 정보(주키와 넘버링에 관한 정보) 중 적어도 하나의 정보를 포함한다. 응답 명령은 특정 메시지에서 추출한 파라미터의 정보 분석에 근거하여 추출된 파라미터들을 업데이트 하도록 구성된다. 또한, 응답 명령은 특정 메시지에 대한 응답으로 업데이트된 파라미터를 가진 메시지를 다른 사용자들에게 보내도록 구성된다.
도 20a는 사용자가 기존의 문장에 어떻게 응답하는지를 도시한다. 여기서는 사용자 B가 기존 문장에 응답한다고 가정한다.
도 20a의 ①에서, 사용자는 이미 존재하는 문장을 선택하고 응답 명령을 적용한다.
도 20a의 ②에서, 사용자가 응답 명령을 적용하면, 사용자가 텍스트를 입력할 수 있는 소프트 키보드(2000)가 사용자에게 표시된다. 사용자는 텍스트 입력 영역(2002)에 텍스트를 입력한다. 사용자는 송신 버튼(2004)에 손 제스처를 적용한다. 장치는 송신 버튼 상의 손 제스처를 검출하면 사용자의 텍스트 및 기타 문장 정보를 송신한다.
도 20a의 ③에서, 사용자 B(2006)에 의해 생성된 새로운 문장은 사용자가 응답하고자 하는 문장 아래에 배치된다. 다른 3명의 사용자는 또한 동일한 문장을 수신한다. 송신자와 수신자들을 포함한 모든 사용자가 그들의 장치들 안에서 동일한 레이아웃을 공유하는 것이 바람직하다. 또한, 양 사용자의 장치들은 (응답) 문장을 송신 또는 수신할 때 TWA를 적용한다고 가정한다.
임의의 레이아웃들에서, 문장이 가질 수 있는 자식 문장의 수에 대한 한계가 있음에 유의한다. 레이아웃이 그의 한계에 도달했다면, 그것은 그의 최대 용량에 도달했다고 하며, 이 경우 장치는 사용자가 응답할 수 없게 해야 한다(또는 응답 명령이 비활성화되어야 한다).
설명 목적을 위해, 장치가 다음과 같이 설정되는 것으로 가정한다.
M(x)=M(a1)=M(a2)=M(a3)=2 및 D=4
여기서 M(·)은 문장에 허용되는 자식 문장의 최대 수이다. 이는 임의의 문장에 대해 2개의 자식 문장만이 있을 수 있으며, 문장의 최저 깊이는 4임을 의미한다. 이 레이아웃은 2진 트리와 동일한 구조를 갖는다.
도 20b는 M(x)=M(a1)=M(a2)=M(a3)=2 및 D=4인 경우에 그의 최대 용량에 있는 레이아웃을 도시한다. 이것은 주어진 제약 하에서 답장 문장을 위한 공간이 더 이상 없다는 것을 의미한다. 따라서, 사용자가 문장들 중 어느 하나를 선택하더라도, 사용자는 응답 명령을 적용할 수 없어야 한다. 이는 또한 선택된 문장에 응답할 수 있는지 여부를 나타내는 표시가 있어야 함을 의미한다. 장치는 이러한 내부 상태를 계속 추적한다고 가정한다.
도 20c는 방금 주어진 응답 제약에 기초한 사용자의 응답 시퀀스를 도시한다. 음영 문장들은 제약으로 인해 사용자들이 더 이상 응답할 수 없는 문장들이다.
도 20c의 ①에서, 도면은 주 문장을 갖는 레이아웃을 도시한다. 이것은 사용자 B의 장치이며, 사용자 B를 포함하는 다른 사용자들이 서로 상호작용한다고 가정한다. 따라서, 이것은 모든 사용자가 사실상 문장을 수신하고 응답한다는 것을 의미한다. 도 20c의 ②에서, 도면은 사용자가 주 문장에 응답하는 것을 나타낸다. 도 20c의 ③에서, 도면은 사용자가 주 문장에 응답하는 것을 나타낸다. 주 문장은 이제 2개의 하위 문장을 가지므로, 사용자는 더 이상 응답할 수 없다. 도 20c의 ④에서, 도면은 사용자가 문장 x.1에 응답하는 것을 나타낸다. 도 20c의 ⑤에서, 도면은 사용자가 문장 x.1에 응답하는 것을 나타낸다. 이제, 문장 x.1에 대한 2개의 자식 문장이 있으므로 더 이상 사용자는 문장에 응답할 수 없다. 도 20c의 ⑥에서, 도면은 사용자가 문장 x.1.2에 응답하는 것을 나타낸다. 도 20c의 ⑦에서, 도면은 사용자가 문장 x.1.2에 응답하는 것을 나타낸다. 이제, 문장 x.2.1에 대한 2개의 자식 문장이 있으므로 더 이상 사용자는 문장에 응답할 수 없다. 도 20c의 ⑧에서, 도면은 사용자가 문장 x.1.2.1에 응답하는 것을 나타낸다. 자식 문장은 문장 x.2.1.1이며, 깊이 한계(D=4)에 도달했다. 따라서, 사용자는 문장 x.2.1.1에 더 이상 응답할 수 없다. 도 20c의 ⑨에서, 도면은 사용자가 문장 x.1.2.1에 응답하는 것을 나타낸다. 자식 문장은 문장 x.2.1.2이며, 깊이 한계(D=4)에 도달했다. 따라서, 사용자는 더 이상 문장 x.2.1.2에 응답할 수 없다. 또한, 문장 x.1.2.1에 대한 2개의 자식 문장이 있으므로 더 이상 사용자가 문장에 응답할 수 없다.
이제, 시간 만료 문장(TES)을 설명한다.
시간 만료 문장은 반드시 명령일 필요는 없다. 오히려, 텍스트 송신(제1 문장 송신) 및 응답 명령의 일부인 특징을 갖는다. 간단히 말하면, 시간 만료 문장에서, 사용자는 문장을 보내기 바로 전에 만료 시간을 설정할 수 있다. 이 문장은 다수의 사용자에게 송신된다. 만료 시간에, 문장들은 시간 만료 문장을 수신한 모든 사용자 장치로부터 삭제된다. 즉, 이 특징은 임시 문장들을 허용한다. 시간 만료 문장에서는 문장의 소유자만이 만료 시간/날짜를 적용할 수 있다.
계속하기 전에, 시간 만료 문장을 설정하는 4개의 사례가 있을 수 있음에 유의한다.
제1 사례인 타입 1은 주 문장(레이아웃의 제1 문장)만이 시간 만료되고, 사용자가 그에 응답할 수 있게 하는 것이다. 제2 사례인 타입 2는 주 문장만이 시간 만료되고, 사용자가 주 문장에 응답하지 못하게 하는 것이다. 따라서, 이 경우, 어떠한 하위 문장도 갖지 않는 하나의 문장이 있을 것이다. 이러한 사례들에서, 사용자는 응답 명령을 적용하여 시간 만료 문장을 생성할 수 없을 것이다.
제3 사례인 타입 3은 임의의 문장(주 문장 또는 하위 문장)이 시간 만료 문장이 되고, 사용자가 그에 응답할 수 있게 하는 것이다. 제4 사례인 타입 4는 임의의 문장이 시간 만료 문장이 되고, 사용자가 주 문장 및/또는 하위 문장에 응답하지 못하게 하는 것이다.
이하에서 더 많은 상세가 제공된다.
도 21a는 사용자가 문장의 만료 날짜를 설정하는 방법을 도시한다. 아래의 절차들은 사용자가 다른 사용자(들)에 대한 메시지를 생성하도록 선택하거나 기존 문장에 응답 명령을 적용하면 발생한다. 사용자가 문장에 응답할 때 만료 시간을 설정한다고 가정한다. 도 21a의 ①에서, 사용자는 기존 문장을 선택하고 응답 명령을 적용한다. 도 21a의 ②에서, 사용자는 문장을 생성하고, 송신 버튼에 손 제스처를 적용하는 대신, 사용자는 만료 설정 및 송신(2100) 버튼에 손 제스처를 적용한다. 장치가 주 문장만이 시간 만료 문장이 되는 것을 허용하면, 사용자가 응답 명령을 적용할 때 만료 설정 및 송신(2100) 버튼이 나타나지 않을 것이라는 점에 유의하는 것이 중요하다. 그러나, 장치가 모든 문장이 시간 만료 문장이 될 수 있게 하면, 사용자가 주 문장을 생성하거나 기존 문장에 응답하는 것과 관계없이 만료 설정 및 송신(2100) 버튼이 나타날 것이다. 도 21a의 ③에서는 2100 상의 손 제스처를 검출하면, 만료 날짜 설정이 표시된다. 이 표시는 사용자들이 만료 시간을 선택할 수 있게 한다. 도시된 바와 같이, 사용자에게는 만료 시간을 년, 월, 주, 일 및 시간 단위로 입력하는 옵션이 제공된다. 사용자가 "24 시간"을 선택한다고 가정한다. 이제, 사용자는 다른 사용자가 생성되려고 하는 문장에 응답할 수 있게 해야 하는지를 결정한다. 사용자는 사용자 응답 허용 또는 사용자 응답 차단을 선택할 수 있다. 따라서, 장치가 주 문장만이 시간 만료되도록 허용하면, 타입 1 또는 타입 2 시나리오를, 그렇지 않으면 타입 3 및 타입 4 시나리오를 갖게 된다. 사용자는 통지를 위해 5분(5m)을 선택한다(장치는 5분 안에 시간 만료 문장이 삭제된다는 메시지를 표시한다). 마지막으로, 사용자는 OK 버튼에 손 제스처를 적용한다. OK 버튼(2102) 상의 손 제스처를 검출하면, 도 21a의 ④에서 사용자의 장치에 시간 만료 문장이 표시되고, 같은 문장이 다른 사용자들에게 송신된다.
시간 만료 문장들은 특수 문장들이므로, 어떤 문장들이 시간 만료되지를 사용자에게 알려주는 것이 유익하다. 이 사실을 나타낼 수 있는 여러 방법이 있다. 디폴트로, 시간 만료 문장들은 다른 비-시간 만료 문장들과 다른 텍스트 박스 컬러를 갖는 것으로 가정한다. 또한, 도 21a의 ④에 도시된 바와 같이, 만료 시간은 문장(2104) 내의 우상단에 표시된다.
마지막으로, 시간 만료 문장이 만료될 때마다, 해당 문장 자체 및 그의 모든 하위 문장이 또한 삭제된다는 점에 유의한다. 또한, 시간 만료 문장의 하위 문장은 그의 상위 문장보다 늦게 만료될 수 없다.
4개의 상이한 타입의 더 상세한 예시들이 제공된다.
도 21b는 타입 1 및 타입 2의 상세를 도시한다.
도 21b의 ① 내지 ③의 도면들은 타입 1의 상세를 도시한다. 도 21b의 ①에는, 2개의 레이아웃이 있다. 제1 레이아웃 내의 어떠한 문장도 시간 만료되지 않는다. 그러나, 제2 레이아웃의 주 문장은 사용자 A에 의해 생성된 시간 만료 문장이다. 다른 사용자들이 주 문장에 응답했다. 도 21b의 ②에서, 장치는 5분 안에 주 문장과 모든 그의 하위 문장이 삭제된다는 통지를 표시한다. 도 21b의 ③에서, 장치는 만료 직후 문장을 삭제한다.
도 21b의 ④ 내지 ⑥의 도면들은 타입 2의 상세를 도시한다. 도 21b의 ④에는, 2개의 레이아웃이 있다. 제1 레이아웃 내의 어떠한 문장도 시간 만료되지 않는다. 그러나, 제2 레이아웃의 주 문장은 사용자 A에 의해 생성되며 시간 만료된다. 다른 사용자들은 응답할 수 없다. 도 21b의 ⑤에서, 사용자는 문장에 응답하려고 시도한다. 장치는 사용자가 이 문장에 응답할 수 없다는 메시지를 표시한다. 도 21b의 ⑥에서, 장치는 5분 안에 주 문장이 삭제된다는 통지를 표시한다. 문장이 만료되면, 레이아웃은 도 21b의 ③에 나타난다.
도 21c는 타입 3 및 타입 4의 상세를 도시한다.
도 21c의 ① 내지 ③의 도면들은 타입 3의 상세를 나타낸다. 도 21c의 ①에서, 사용자 B는 시간 만료가 아닌 주 문장에 응답한다. 사용자 B는 그의 문장을 시간 만료로 설정하고, 다른 사용자가 그에 응답하도록 허용했다. 도시된 바와 같이, 문장 x.1 및 그의 모든 하위 문장(문장 x.1.1 및 x.1.1.1)은 이제 시간 만료된다. 도 21c의 ②에서, 장치는 5분 내에 문장 x.1과 그의 모든 하위 문장이 삭제된다는 통지를 표시한다. 도 21c의 ③에서, 장치는 만료 직후 장치를 삭제한다. 도면에 표시된 것처럼, 문장 x.1, x.1.1 및 x.1.1.1은 더 이상 보이지 않는다.
도 21c의 ④ 내지 ⑥의 도면들은 타입 4의 상세를 도시한다. 도 21c의 ④에서, 사용자 B는 시간 만료가 아닌 주 문장에 응답한다. 사용자 B는 그의 문장을 시간 만료로 설정하고, 다른 사용자의 응답을 차단한다. 도 21c의 ⑤에서, 사용자는 문장에 응답하려고 시도한다. 장치는 사용자가 이 문장에 응답할 수 없다는 메시지를 표시한다. 도 21c의 ⑥에서, 장치는 5분 안에 주 문장이 삭제된다는 통지를 표시한다. 문장이 만료되면, 레이아웃은 도 21c의 ③에 나타난다.
이제, 사용자 장치가 턴오프되고, 이 시간 동안 시간 만료 문장이 만료된 상황을 고찰한다. 장치가 턴오프되기 전에 사용자가 이미 시간 만료 문장을 읽은 경우, 장치는 사용자가 장치를 턴온할 때 만료된 문장을 삭제할 수 있다. 그러나, 이 경우가 아니라면, 장치는 만료된 문장의 삭제를 보류하고 사용자가 그것을 읽었는지를 확인해야 한다. 다음은 이 아이디어를 설명한다.
도 21d는 사용자가 시간 만료 문장을 읽지 않고 장치를 턴오프하고(또는 사용자가 장치가 턴오프된 동안 시간 만료 문장을 수신하고), 만료 후에 장치를 턴온하는 상황을 도시한다. 도 21d의 ①의 도면은 주 문장이 시간 만료되는 레이아웃을 나타낸다. 사용자는 문장을 읽지 않았거나, 장치를 턴오프한 후에 문장을 수신했다. 도 21d ②의 도면은 장치가 모든 문장이 만료되었고 삭제될 것이라는 메시지를 표시하는 것을 도시한다. 사용자가 OK 버튼에 손 제스처를 적용하면, 장치는 레이아웃을 삭제한다
이제, 축소, 확장, 모두 축소 및 모두 확장 명령이 레이아웃에 어떻게 적용되는지를 설명한다.
어떤 상황에서는, 사용자가 일부 문장을 표시하기를 원하지 않을 수 있다. 이 프로세스를 축소(또는 '닫기')(collapsing)라고 한다. 예를 들어, 사용자는 선택된 문장의 하위 문장(들)을 축소하기를 원할 수 있다. 이것이 축소 명령이 수행하는 것이다. 문장이 축소되는 경우, 축소된 것을 표시하는 프로세스가 있어야 한다. 즉, 축소를 취소하는 프로세스가 있어야 한다. 이 프로세스를 확장(또는 '열기')(expand)이라고 하며, 이것은 확장 명령이 수행하는 것이다.
모든 문장이 축소될 수 있는 것은 아니다. 리프 문장 및 하위 문장을 갖지 않는 주 문장은 축소될 수 없다. 따라서, 어느 문장들이 축소가능한지를 사용자에게 알려주기 위한 소정 종류의 표시가 있어야 한다. 문장이 축소될 수 있음을 나타내는 심벌을 축소 가능 심벌이라고 한다. 내부에 마이너스 부호를 갖는 정사각형 박스를 축소 가능 심벌로 사용한다. 또한, 문장들이 확장될 수 없는 상황들이 있다. 따라서, 어느 문장들이 확장가능한지를 사용자에게 알려주기 위한 소정 종류의 표시도 있어야 한다. 문장이 확장 가능하다는 것을 지시하는 심벌을 확장 가능 심벌이라고 한다. 내부에 플러스 부호를 갖는 정사각형 박스를 확장 가능 심벌로 사용한다. 또한, 축소되는 하위 문장들의 수가 심벌 내부에 표시되는 변형된 심벌도 사용될 수 있다.
레이아웃에 축소된 문장이 없는 경우, 레이아웃이 최대로 또는 완전히 확장되었다고 한다. 분명히, 이 조건은 단지 심벌들을 검사함으로써 검증될 수 있다. 축소 가능 심벌들만 있는 경우는 레이아웃이 완전히 확장된 것이다. 반면에, 주 문장이 축소되어 있으면, 레이아웃이 최대로 또는 완전히 축소되었다고 한다. 또한, 문장이 최대로 확장된 또는 완전히 축소된 상태에 있다고 말할 수도 있다.
축소 및 확장 문장들에는 2개의 타입의 축소-확장 동작이 있다. 하나는 기억 방법이라고 하는 것이고, 다른 하나는 비기억 방법이라고 하는 것이다. 간단하게 말하면, 기억 방법에서는 모든 문장의 상태들(축소 상태 또는 확장 상태)가 내부적으로 기억된다. 반면, 비기억 방법에서는 이러한 상태들이 기억되지 않는다. 이러한 개념들을 더 상세하게 설명한다.
이제, 축소 명령을 설명한다.
도 22a는 축소 명령을 적용한 경우의 결과를 도시한다. 축소 가능 심벌들은 문장들의 앞쪽에 배치되며, 문장들은 도 22a의 ①의 2200에 도시된 바와 같이 축소될 수 있다는 점에 유의한다.
도 22a의 ①의 도면은 사용자가 문장 x.1.1(음영 텍스트 박스)을 선택하고 축소 명령을 적용하는 경우를 나타낸다.
도 22a의 ②의 도면은 사용자가 문장 x.1.1에 축소 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장 x.1.1의 하위 문장은 더 이상 표시되지 않는다. 또한, 문장 x.1.1 앞에 있던 축소 가능 심벌은 이제 심벌(2202) 안에 표시된 축소된 문장의 수를 갖는 확장 가능 심벌로 변경되었다. 문장 x.1.1 앞에 있는 축소 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 문장 x.1.1에 축소 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다. 이제, 사용자는 문장 x.1(음영 텍스트 박스)을 선택하고 축소 명령을 적용한다.
도 22a의 ③의 도면은 사용자가 문장 x.1을 축소한 후의 레이아웃을 도시한다. 도시된 바와 같이, 그의 하위 문장들은 더 이상 표시되지 않으며, 축소 가능 심벌은 이제 확장 가능 심벌(2204)로 변경되었다. 숫자 2는 축소된 2개의 하위 문장이 있음을 나타낸다는 점에 유의한다. 문장 x.1 앞에 있는 축소 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 문장 x.1에 축소 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다. 이제, 사용자는 주 문장(음영 텍스트 박스)을 선택하고 축소 명령을 적용한다.
도 22a의 ④의 도면은 사용자가 주 문장을 축소한 후의 레이아웃을 도시한다. 도시된 바와 같이, 주 문장의 모든 하위 문장은 더 이상 표시되지 않고, 축소 가능 심벌이 이제 확장 가능 심벌로 변경되었다. 숫자 6은 축소된 6개의 하위 문장이 있음을 나타낸다는 점에 유의한다.
이제, 확장 명령을 설명한다.
도 22b는 확장 명령을 적용한 후의 결과를 나타낸다.
도 22b의 ①의 도면은 사용자가 주 문장(음영 텍스트 박스)을 선택하고 확장 명령을 적용한 경우를 도시한다.
도 22b의 ②의 도면은 사용자가 주 문장에 확장 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 주 문장의 하위 문장들이 표시된다. 장치가 기억 방법으로 동작하기 때문에 장치는 주 문장이 축소되기 전의 레이아웃의 상태(외관)를 보존한다. 즉, 문장 x.1은 주 문장이 축소되기 전에 축소된 상태였고, 주 문장이 확장되면 레이아웃은 이전 상태로 돌아간다. 또한, 주 문장 앞에 있던 확장 가능 심벌이 이제 축소 가능 심벌로 변경되었다. 주 문장 앞의 확장 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 주 문장에 확장 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다. 이제 사용자는 문장 x.1(음영 텍스트 박스)을 선택하고 확장 명령을 적용한다.
도 22b의 ③의 도면은 사용자가 문장 x.1을 확장한 후의 레이아웃을 도시한다. 도시된 바와 같이, 그의 하위 문장들이 표시되고, 확장 가능 심벌이 이제 축소 가능 심벌로 변경되었다. 장치가 기억 방법으로 동작하기 때문에 장치는 문장 x.1이 축소되기 전의 레이아웃의 상태(외관)를 보존한다. 즉, 문장 x.1이 축소되기 전에 문장 x.1.1은 축소된 상태였고, 문장 x.1이 확장되면 레이아웃은 이전 상태로 돌아간다. 문장 x.1 앞에 있는 확장 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 문장 x.1에 확장 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다. 이제 사용자는 문장 x.1.1(음영 텍스트 박스)을 선택하고 확장 명령을 적용한다.
도 22b의 ④의 도면은 사용자가 문장 x.1.1을 확장한 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장 x.1.1.1, 즉 문장 x.1.1의 하위 문장이 표시되고, 확장 가능 심벌이 이제 축소 가능 심벌로 변경되었다.
이제, 사용자가 비기억 방법으로 동작하는 장치 상에서 확장 명령을 적용할 때 레이아웃이 어떻게 변하는지를 설명한다.
도 22c는 장치가 비기억 방법으로 동작하는 경우에 축소된 주 문장에 확장 명령을 적용한 후의 결과를 도시한다.
도 22c의 ①의 도면은 사용자가 주 문장(음영 텍스트 박스)을 선택하고 확장 명령을 적용하는 경우를 나타낸다.
도 22c의 ②의 도면은 사용자가 주 문장에 확장 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 주 문장의 모든 하위 문장이 표시된다. 문장 x.1 및 x.1.1은 주 문장이 축소되기 전에 축소된 상태였지만 이 사실은 무시되고, 모든 하위 문장이 표시된다. 비기억 방법에서, 사용자가 주 문장에 확장 명령을 적용하면, 레이아웃이 최대로 확장된다.
이제, 모두 축소 명령을 설명한다.
모두 축소 명령에서, 장치는 기본적으로 선택된 문장 및 그의 모든 하위 문장(리프 문장 제외)에 축소 명령을 적용한다. 명령은 리프 문장에 적용될 수 없다.
도 22d는 모두 축소 명령을 적용한 후의 결과를 도시한다.
도 22d의 ①의 도면은 사용자가 주 문장(음영 텍스트 박스)을 선택하고 모두 축소 명령을 적용하는 경우를 도시한다.
이제, 사용자는 기억 및 비기억 방법 모두에서 주 문장에 모두 축소 명령을 적용한 것으로 가정한다.
도 22d의 ②의 도면은 사용자가 모두 축소 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 주 문장의 모든 하위 문장은 더 이상 표시되지 않는다. 또한, 주 문장 앞에 있는 축소 가능 심벌이 이제 심벌 내부에 표시된 축소된 문장의 수를 갖는 확장 가능 심벌로 변경되었다.
이제, 사용자가 축소된 주 문장에 대해 확장 명령을 적용하는 두 가지 사례를 고찰한다.
도 22d의 ③ 및 ④의 도면은 장치가 기억 방법으로 동작하는 경우를 도시한다. 사용자가 도 22d의 ②에서 주 문장을 선택하여 확장 명령을 적용했다고 가정한다. 도 22d의 ③에 도시된 바와 같이, 주 문장은 확장되지만 그의 모든 하위 문장은 축소된 상태이다. 이제, 사용자는 문장 x.1에 확장 명령을 적용한다. 도 22d의 ④에 도시된 바와 같이, 문장 x.1은 확장되지만, 그의 하위 문장(문장 x.1.1)은 축소된 상태이다.
장치가 비기억 방법으로 동작하고, 사용자가 모두 축소 명령을 사용하여 축소된, 축소된 주 문장에 확장 명령을 적용한 경우, 모든 문장이 축소된 상태에 있다는 사실이 무시되고, 장치는 단순히 주 문장의 모든 하위 문장을 표시한다. 즉, 레이아웃이 최대로 확장된 상태가 된다.
이제, 모두 확장 명령을 설명한다.
모두 확장 명령에서, 장치는 기본적으로 선택된 문장 및 그의 모든 하위 문장(리프 문장 제외)에 확장 명령을 적용한다. 명령은 리프 문장에 적용될 수 없다.
도 22e는 모두 확장 명령을 적용한 후의 결과를 도시한다.
도 22e의 ①의 도면은 사용자가 주 문장을 선택하여 모두 확장 명령을 적용한 경우를 나타낸다.
도 22e의 ②의 도면은 사용자가 주 문장에 모두 확장 명령을 적용한 후의 레이아웃을 도시한다. 모두 확장 명령은 기본적으로 (리프 문장을 제외한) 모든 문장에 확장 명령을 적용하므로, 도시된 바와 같이, 레이아웃이 최대로 확장된다. 장치가 비기억 방법으로 동작할 경우, 확장 및 모두 확장 명령 간에는 차이가 없다는 점에 유의한다.
이제 숨기기(Hide), 표시(Show), 모두 숨기기(Hide All) 및 모두 표시(Show All) 명령이 레이아웃에 어떻게 적용되는지를 설명한다.
사용자가 텍스트 메시지들을 수신할 때, 그들은 다양한 길이를 갖는다. 텍스트는 텍스트 표시 영역의 하나의 텍스트 라인에 맞도록 충분히 짧거나 여러 텍스트 라인을 차지할 수 있다. 수신된 모든 텍스트가 여러 라인을 차지하면, 이것은 레이아웃들이 불규칙한 높이를 갖는 텍스트 박스들을 갖게 할 수 있으며, 이것은 장치의 디스플레이 상의 무질서를 유발할 수 있다. 장치가 사용자가 수신된 문장을 읽었음을 검출하면 텍스트의 소정 부분을 숨기는 것이 바람직할 것이다. 예를 들어, 사용자가 문장을 읽은 후 레이아웃의 모든 텍스트 박스 높이가 미리 정의된 높이로 줄어들면, 레이아웃은 더 조직화될 것이다. 또한, 대부분의 경우, 사용자가 문장을 읽은 경우, 사용자가 돌아가서 문장을 반복해서 읽을 가능성은 매우 적다. 따라서, 레이아웃의 조직화 및 더 양호한 전체 뷰를 유지하기 위해 텍스트의 소정 부분을 숨기는 것이 합리적이다.
문장 내의 텍스트가 최대로 보이는 경우, 문장은 가시(또는 숨김 가능) 상태에 있다고 한다. 반면에 텍스트 박스의 높이가 그의 디폴트 높이로 줄어들고 텍스트가 감소된 텍스트 박스에 맞게 숨겨지면, 문장이 숨김(또는 표시 가능) 상태에 있다고 한다.
모든 문장이 숨겨질 수 있는 것은 아니다. 디폴트 높이(가능한 최소 텍스트 박스 높이)에 있는 어떠한 문장도 숨길 수 없다. 따라서, 어떤 문장을 숨길 수 있는지의 사용자에 대한 소정 종류의 지시가 있어야 한다. 문장이 숨김 가능함을 나타내는 심벌을 숨김 가능 심벌이라고 한다. 안에서 위를 가리키는 삼각형을 가진 정사각형 박스를 숨김 가능 심벌로 사용한다. 또한, 사용자가 문장을 숨기면, 문장이 표시 가능하다는 것의 사용자에 대한 지시도 있어야 한다. 문장이 표시 가능함을 나타내는 심벌을 표시 가능 심벌이라고 한다. 안에서 아래를 가리키는 삼각형을 갖는 정사각형 박스를 표시 가능 심벌로 사용한다.
이제 숨기기 명령을 설명한다.
도 23b는 숨기기 명령을 적용한 후의 결과를 나타낸다. 도 23a의 ①의 2300에 도시된 바와 같이 숨김 가능 심벌들(위를 가리키는 삼각형)이 문장들의 우상 코너에 배치된다는 점에 유의한다.
도 23a의 ①의 도면은 사용자가 문장 x.1.1(음영 텍스트 박스)을 선택하고 숨기기 명령을 적용하는 경우를 나타낸다. 문장 x.1은 하나의 텍스트 라인만으로 구성되며, 텍스트 박스의 높이는 디폴트 높이라고 하는 것과 같다는 점에 유의한다. 모든 텍스트 박스의 높이는 디폴트 높이보다 작을 수 없다. 장치 상의 문장들의 모든 텍스트는 최대 가시 상태에 있다.
도 23a의 ②의 도면은 사용자가 문장 x.1.1에 숨기기 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장의 높이는 디폴트 높이로 줄어들었고, 일부 텍스트 부분은 표시되지 않는다. 또한, 문장 x.1.1 상의 숨김 가능 심벌은 이제 표시 가능 심벌(2302, 아래를 가리키는 삼각형)로 변경되었다. 문장 x.1.1 상의 숨김 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 문장 x.1.1에 숨기기 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다. 이제 사용자는 문장 x.1.1(음영 텍스트 박스)을 선택하고 숨기기 명령을 적용한다.
도 23a의 ③의 도면은 사용자가 문장 x.1.1.1을 숨긴 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장의 높이는 디폴트 높이로 줄어들었고 일부 텍스트 부분은 표시되지 않는다. 또한, 문장 x.1.1.1 상의 숨김 가능 심벌이 이제 표시 가능 심벌(2304, 아래를 가리키는 삼각형)로 변경되었다. 문장 x.1.1.1 상의 숨김 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 문장 x.1.1.1에 숨기기 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다. 이제 사용자는 주 문장(음영 텍스트 박스)을 선택하고 숨기기 명령을 적용한다.
도 23a의 ④의 도면은 사용자가 주 문장을 숨긴 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장의 높이는 디폴트 높이로 줄어들었고 일부 텍스트 부분은 표시되지 않는다. 또한, 주 문장 상의 숨김 가능 심벌은 이제 표시 가능 심벌로 변경되었다. 주 문장 상의 숨김 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 주 문장에 숨기기 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다.
이제 표시 명령을 설명한다.
도 23b는 표시 명령을 적용한 후의 결과를 도시한다.
도 23b의 ①의 도면은 사용자가 주 문장(음영 텍스트 박스)을 선택하고 표시 명령을 적용하는 경우를 도시한다.
도 23b의 ②의 도면은 사용자가 주 문장에 표시 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장의 높이가 그의 원래 텍스트 박스 높이로 증가하였고 텍스트가 완전히 표시된다. 또한, 주 문장 상의 표시 가능 심벌이 이제 숨김 가능 심벌(2306, 위를 가리키는 삼각형)로 바뀌었다. 주 문장 상의 표시 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 주 문장에 표시 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다. 이제 사용자는 문장 x.1.1.1(음영 텍스트 박스)을 선택하고 표시 명령을 적용한다.
도 23b의 ③의 도면은 사용자가 문장 x.1.1.1을 보이게 만든 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장의 높이가 그의 원래 텍스트 박스 높이로 증가하였고 텍스트가 완전히 표시된다. 또한, 문장 x.1.1.1 상의 표시 가능 심벌이 숨김 가능 심벌(2308, 위를 가리키는 삼각형)로 변경되었다. 문장 x.1.1.1 상의 표시 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 문장 x.1.1.1에 표시 명령을 적용한 것과 동일한 효과를 본다는 점에 유의한다. 이제 사용자는 문장 x.1.1.1(음영 텍스트 박스)을 선택하고 표시 명령을 적용한다.
도 23b의 ④의 도면은 사용자가 문장 x.1.1을 보이게 만든 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장의 높이가 그의 원래 텍스트 박스 높이로 증가하였고 텍스트가 완전히 표시된다. 또한, 문장 x.1.1 상의 표시 가능 심벌이 숨김 가능 심벌로 변경되었다. 문장 x.1.1 상의 표시 가능 심벌이 손 제스처 검출 가능하고, 사용자가 심벌에 손 제스처를 적용한 경우, 사용자는 x.1.1 문장에 표시 명령을 적용할 때와 동일한 효과를 본다는 점에 유의한다.
이제 모두 숨기기 명령을 설명한다.
모두 숨기기 명령에서, 장치는 기본적으로 선택된 문장 및 그의 모든 하위 문장에 숨기기 명령을 적용한다.
도 23c는 모두 숨기기 명령을 적용한 후의 결과를 도시한다.
도 23c의 ①의 도면은 사용자가 주 문장(음영 텍스트 박스)을 선택하고 모두 숨기기 명령을 적용하는 경우를 도시한다. 선택한 문장이 가시 상태이므로 명령이 적용 가능하다는 점에 유의한다.
도 23c의 ②의 도면은 사용자가 모두 숨기기 명령을 적용한 후의 레이아웃을 나타낸다. 도시된 바와 같이, 주 문장의 모든 하위 문장은 디폴트 높이로 감소했다. 또한, 문장 상에 있던 숨김 가능 심벌이 이제는 표시 가능 심벌로 변경되었다.
이제, 모두 표시 명령을 설명한다.
모두 표시 명령에서, 장치는 기본적으로 선택된 문장 및 그의 모든 하위 문장에 표시 명령을 적용한다.
도 23d는 모두 표시 명령을 적용한 후의 결과를 도시한다.
도 23d의 ①의 도면은 사용자가 주 문장(음영 텍스트 박스)을 선택하고 모두 표시 명령을 적용하는 경우를 도시한다. 선택한 문장이 숨김 상태이므로 명령을 적용할 수 있다는 점에 유의한다.
도 23d의 ②의 도면은 사용자가 모두 표시 명령을 적용한 후의 레이아웃을 나타낸다. 도시된 바와 같이, 주 문장의 모든 하위 문장은 그들의 원래 텍스트 박스 높이로 증가했다. 또한, 문장 상에 있던 표시 가능 심벌이 숨김 가능 심벌로 바뀌었다.
이제 레이아웃에 삭제 및 모두 삭제 명령이 어떻게 적용되는지를 설명한다.
문장은 일반적으로 텍스트 및 텍스트 박스로 구성된다. 삭제 명령의 목적은 사용자가 "삭제"하고자 하는 선택된 문장(또는 문장 자체)의 텍스트를 지우거나 표시하지 않는 것이다. 모두 삭제 명령의 목적은 한 번에 여러 문장에 삭제 명령을 적용하는 것이다.
문장 내의 텍스트가 삭제되면, 문장은 삭제된 상태에 있다고 한다. 문장이 삭제되면 대부분의 명령이 비활성화다. 그러나, 응답, 축소/확장 및 반전/복귀 명령은 비활성화지 않는다. 또한, 두 가지 타입의 삭제 방법을 제시하며, 이들을 삭제 방법 1 및 삭제 방법 2라고 한다.
이제 삭제 명령을 설명한다.
도 24a는 삭제 명령을 적용한 후의 결과를 나타낸다.
도 24a의 ①의 도면은 사용자가 문장 x.1.1.1(음영 텍스트 박스)을 선택하고 삭제 명령을 적용하는 경우를 나타낸다.
도 24a의 ②의 도면은 장치가 삭제 방법 1로 동작하는 경우에 사용자가 문장 x.1.1.1에 삭제 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장 x.1.1.1의 텍스트는 더 이상 표시되지 않는다(삭제된 상태이다).
도 24a의 ③의 도면은 장치가 삭제 방법 2로 동작하는 경우에 사용자가 문장 x.1.1.1에 삭제 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장 x.1.1.1의 텍스트 및 텍스트 박스는 더 이상 표시되지 않는다(삭제된 상태이다). 그러나, 삭제 방법 1에서 텍스트 박스가 표시되지만, 삭제 방법 2에서는 텍스트 박스가 표시되지 않는다. 그러나, 장치가 삭제 방법 1로 동작하는 경우 그리고 문장 x.1.1이 삭제된 경우, 텍스트만 삭제되고, 텍스트 박스는 레이아웃 내에 남아 구조를 유지한다.
새로운 용어를 정의한다. 리프 문장을 포함한 문장들의 열이 삭제될 때, 문장들은 리프 문장에 대한 삭제된 문장들의 열(a Streak of Deleted statements to the Leaf-statement)을 형성한다고 하고, 이를 SDL-분기(SDL-Branch)라고 한다.
따라서, 리프 문장 및 그의 직접 부모 문장이 삭제될(SDL-분기를 형성할) 때마다, 문장들은 삭제 방법 2에서 표시되지 않는다는 것을 알 수 있다. 예를 들어, 문장 x.a1...ak-2,ak-1,ak가 리프 문장인 것으로 가정한다. 또한, 문장 자체 및 그의 2개의 직접 부모 문장 x.a1...ak-2.ak-1 및 x.a1...ak-2가 삭제된다고 가정한다. 문장 x.a1...ak-1 및 x.a1...ak-2의 모든 하위 문장이 삭제된 상태에 있는 한, 3개의 문장 - 문장 x.a1...ak-2.ak-1.ak, x.a1...ak-2.ak-1 및 x.a1...ak-2 -이 표시되지 않는다. 그러나, 문장 x.a1...ak-2 문장이 삭제된 상태이고, 그의 하위 문장 중 하나가 삭제된 상태가 아니면, 문장 x.a1...ak-2의 텍스트 박스만 표시된다.
문장이 삭제될 때마다, 삭제된 문장의 텍스트 박스 높이는 디폴트 높이로 감소한다는 점에 유의한다. 또한, 이것은 숨김 가능 및 표시 가능 심벌이 표시되지 않음을 의미한다.
요컨대, 삭제 방법 1에서, 텍스트 박스가 삭제되지 않은 채로 남아 있고 텍스트만이 삭제되는 것은 문제가 없다. 이러한 방식으로, 레이아웃이 그의 구조를 유지한다. 그러나, 삭제 방법 2에서는 특정 상황에서 분기가 표시되지 않는다.
이제, 모두 삭제(Delete All) 명령을 설명한다.
모두 삭제 명령에서, 장치는 기본적으로 선택된 문장 및 그의 모든 하위 문장에 삭제 명령을 적용한다.
도 24b는 모두 삭제 명령을 적용한 후의 결과를 도시한다.
도 24b의 ①의 도면은 사용자가 문장 x.1(음영 텍스트 박스)을 선택하고 모두 삭제 명령을 적용하는 경우를 나타낸다.
도 24b의 ②의 도면은 장치가 삭제 방법 1으로 동작하는 경우에 사용자가 문장 x.1에 모두 삭제 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장 x.1 및 그의 모든 하위 문장의 텍스트들은 더 이상 표시되지 않는다(삭제된 상태에 있다).
도 24b의 ③의 도면은 장치가 삭제 방법 2으로 동작하는 경우에 사용자가 문장 x.1에 대해 모두 삭제 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 문장 x.1 및 그의 모든 하위 문장의 텍스트들 및 텍스트 박스들은 더 이상 표시되지 않는다(삭제된 상태에 있다). 일련의 삭제된 문장들은 리프 문장을 포함하고, 어떠한 문장도 삭제된 상태가 아닌 하위 문장을 갖지 않으므로(문장 x.1 및 x.1.1은 하나의 하위 문장만 갖고, 삭제된 상태에 있으므로), 분기가 표시되지 않는다는 점에 유의한다.
사용자가 주 문장에 삭제 명령을 적용한 경우, 주 문장은 삭제된 상태가 아닌 하위 문장을 갖기 때문에 텍스트 박스는 여전히 표시된다(텍스트는 표시되지 않는다).
이제, 사용자가 문장(들)을 삭제한 후 문장을 수신하면 어떤 일이 발생하는지를 고찰한다.
도 24c는 사용자가 문장 x.1, x.1.1 및 x.1.1.1을 삭제한 후에 새로운 문장(문장 x.1.1.1.1)을 수신하는 것을 도시한다. 도 24c의 ①의 결과는 장치가 삭제 방법 1로 동작하는 경우를 나타낸다. 이 경우는 간단하고 단순하다. 새 문장은 도면에 도시된 바와 같이 그의 올바른 위치에 배치된다. 도 24c의 ②의 결과는 장치가 삭제 방법 2로 동작하는 경우를 나타낸다. 문장 x.1, x.1.1 및 x.1.1.1을 삭제한 후에, 삭제된 3개의 문장(음영 및 빈 텍스트 박스)이 표시되지 않았다는 점에 유의한다. 그러나, 문장 x.1.1.1.1을 수신하면, 이제 이들 3개의 삭제된 문장이 표시된다. 따라서, 새로운 문장이 수신되고 그의 부모 문장이 레이아웃에 표시되지 않고 삭제된 상태에 있을 때마다, 새로운 문장의 직접적 부모 문장이 표시되어야 한다. 또한, 이러한 직접 부모 문장이 표시될 때, 그들은 그들의 자식 문장이 삭제되지 않은 상태에 있다는 조건을 충족시켜야 한다.
이제, UBD(유비쿼터스 삭제, Ubiquitous Delete) 및 모두 UBD(UBD All) 명령이 레이아웃 상에 어떻게 적용되는지를 설명한다.
사용자가 생성한 문장을 사용자가 삭제하기를 원하는 상황을 고찰한다. 동시에, 사용자는 문장을 수신한 다른 사용자들에게도 같은 문장을 삭제하도록 요청하기를 원한다. 이것은 유비쿼터스 삭제가 하는 일이며, 이를 UBD 명령이라고 한다.
UBD 명령은 일종의 삭제 동작이다. 사용자가 문장에 유비쿼터스 삭제를 적용할 때마다 삭제 명령에서 사용된 것과 동일한 삭제 절차가 적용된다. UBD와 삭제 명령의 유일한 차이점은 사용자가 문장에 UBD 명령을 적용할 때 동일한 문장을 또한 수신한 다른 사용자들도 문장을 삭제하라고 요청된다는 것이다. 따라서, 사용자가 문장에 UBD 명령을 적용할 때, 삭제 명령이 실제로 적용된 다음, 다른 사용자에게 문장을 삭제하도록 요청하는 추가 절차가 실행된다. 유비쿼터스 삭제에서는 제한이 부과된다. 문장의 소유자가 UBD 명령을 적용할 수 있다고 가정한다. 물론, 이 제한을 완화하고 임의의 사용자가 유비쿼터스 삭제를 적용하게 할 수 있지만, 여기에는 제한을 유지한다.
이제 UBD 명령을 설명한다. 여기서, 서로 상호작용하는 4명의 사용자가 있고, 사용자 B가 UBD 명령을 적용한다고 가정한다.
도 25a는 사용자 B가 문장 x.1에 UBD 명령을 적용하는 것을 도시한다. 사용자 B의 장치는 문장 x.1에 삭제 명령을 적용하고, 각각의 사용자가 문장을 삭제하고자 하면 다른 사용자에게 메시지를 송신한다.
도 25b는 UBD 명령을 적용한 후의 결과를 도시한다. 도 25b의 ① 내지 ④의 도면들은 사용자 A, 사용자 B, 사용자 C 및 사용자 D의 장치들이다. 사용자 B가 생성한 문장 x.1은 도 25b의 ②에 도시된 바와 같이 UBD 명령 적용으로 인해 이미 삭제되었다는 점에 유의한다. 도 25b의 ③에 도시된 바와 같이, 사용자 B가 그의 장치에서 문장 x.1에 UBD 명령을 적용하기 전에 사용자 C가 문장 x.1을 삭제한 것으로 가정한다. 다른 사용자인 사용자 A(도 25b의 ①) 및 사용자 D(도 25b의 ④)의 경우, 그들은 그들이 문장 x.1을 삭제하기를 원하는지를 질문받는다. 사용자가 삭제를 선택하면 사용자 장치는 문장에 삭제 명령을 적용한다. 사용자가 선택하지 않으면 장치는 아무것도 하지 않는다. 사용자 C의 경우, 장치는 문장이 이미 삭제되었기 때문에 사용자가 문장을 삭제하기를 원하는지를 사용자에게 묻지 않는다. 사용자 A와 사용자 D가 문장을 삭제하기로 동의했다고 가정한다.
이제 모두 UBD 명령을 설명한다. 다시, 서로 상호작용하는 4명의 사용자가 있으며, 사용자 B가 모두 UBD 명령을 적용한다고 가정한다.
도 25c는 사용자 B가 문장 x.1에 모두 UBD 명령을 적용하는 것을 설명한다. 사용자 B의 장치는 문장 x.1에 모두 삭제 명령을 적용하고, 각각의 사용자가 문장 및 그의 모든 하위 문장을 삭제하기를 원하는 경우 다른 사용자에게 메시지를 송신한다.
도 25d는 UBD 명령을 적용한 후의 결과를 도시한다. 도 25d의 ① 내지 ④의 도면들은 사용자 A, 사용자 B, 사용자 C 및 사용자 D의 장치들이다. 사용자 B가 생성한 문장 x.1 및 그의 모든 하위 문장은 도 25d의 ②에 도시된 바와 같이 모두 UBD 명령의 적용으로 인해 이미 삭제되었다는 점에 유의한다. 사용자가 삭제를 선택하면 사용자 장치는 문장에 모두 삭제 명령을 적용한다. 사용자가 선택하지 않으면 장치는 아무것도 하지 않는다. 사용자 A와 사용자 D는 문장을 삭제하기로 동의했으며 사용자 C는 문장 삭제를 거부한 것으로 가정한다.
이제, 사용자 B로부터 요청을 수신된 사용자들이 결정을 내릴 때 일어나는 일을 설명한다.
도 25e는 사용자가 UBD 및 모두 UBD 명령을 적용한 후의 사용자 B의 장치를 도시한다. 도 25e의 ①의 도면은 사용자가 UBD 명령을 적용하고 다른 모든 사용자가 결정을 내린 경우이다. 메시지 박스에 도시된 바와 같이, 다른 사용자가 내린 결정은 사용자 B에게 통지된다. 도 25e의 ②의 도면은 사용자가 모두 UBD 명령을 적용하고 다른 모든 사용자가 결정한 경우이다. 메시지 박스에 도시된 바와 같이, 다른 사용자가 내린 결정은 사용자 B에게 통지된다.
요컨대, 유비쿼터스 삭제의 특성은 사용자가 명령을 적용할 때마다 장치가 다른 사용자에게 신호를 송신한다는 것이다. 이는 다른 사용자에 대한 요청을 트리거하고, 다른 사용자가 결정을 내리면, 이 결과(신호)는 요청한 원래 사용자에게 송신된다.
이제 레이아웃에 수정 명령이 어떻게 적용되는지를 설명한다.
사용자가 문장을 생성하고 다른 사용자(들)에게 보낸 후에, 문장을 보낸 사용자는 그가 보낸 문장을 "수정"하기를 원할 수 있다. 수정 명령은 사용자가 선택된 문장의 텍스트를 변경할 수 있게 한다.
수정 명령을 적용하는 기본 가정은 사용자가 적어도 하나의 다른 사용자(들)와 상호작용하고 모든 사용자가 동일한 문장을 공유한다는 것이다. 따라서, 문장을 수정하는 것은 상호작용시에 사용자들의 모든 장치에 있는 기존 문장의 텍스트를 변경하는 것이다. 텍스트를 수정할 때 가장 중요한 점은 문장의 소유자만 수정 명령을 적용할 수 있다는 것이다. 또한, 문장에 수정 명령을 적용하면, 문장을 받은 다른 사용자(들)의 장치에서 동일한 문장이 수정된다.
도 26a는 사용자 B가 문장의 소유자인 경우에 문장에 수정 명령을 적용하는 것을 도시한다. 사용자 B는 세 명의 다른 사용자, 즉 사용자 A, 사용자 C 및 사용자 D와 상호작용하고 있다고 가정한다.
도 26a의 ①에서, 사용자 B는 문장 x.1.1(2600, 음영 텍스트 박스)에 수정 명령을 적용한다. 사용자가 "Word!"라는 단어를 "World!"로 수정하려고 한다고 가정한다.
도 26a의 ②에서, 사용자가 명령을 적용하면, 소프트 키보드가 표시되고(2602), 소프트 키보드의 텍스트 입력 영역(2604)에 전체 텍스트가 표시되어 사용자가 텍스트를 수정할 수 있다. 사용자가 단어 "Word!"를 "World!"로 변경하고 "적용" 버튼에 손 제스처를 적용한다. 사용자가 "취소" 버튼에 손 제스처를 적용하면 아무 일도 일어나지 않는다.
사용자가 텍스트를 변경하지 않았거나 텍스트 입력 영역(2604) 내에 텍스트가 없는 경우, "적용" 버튼은 비활성화 것이다.
도 26b는 수정 명령을 적용한 후의 결과를 도시한다. 4개의 도면 모두에 도시된 바와 같이, 수정은 네 명의 사용자 모두에게 투영되었다. 또한, 도 26b의 ①, ③ 및 ④에 도시된 바와 같이, 세 명의 사용자(사용자 B 제외)는 사용자 B가 문장을 수정했음을 알리는 메시지를 받는다.
이제 레이아웃에 반전(Invert) 및 복귀(Revert) 명령이 어떻게 적용되는지를 설명한다.
여러 문장을 갖는 레이아웃이 있을 때, 가장 최근의 문장만을 강조하는 것이 좋은 아이디어일 수 있다. 구조적으로, 가장 최근의 문장은 (분기 내의) 리프 문장일 것이다. 레이아웃에 반전 명령을 적용하면 장치는 리프 문장만 표시한다. 이것은 장치가 레이아웃의 바닥 뷰를 사용자에게 제공하는 것과 같다. 복귀 명령은 단지 레이아웃을 그의 원래 뷰로 복귀시킨다. 레이아웃이 반전된 상태인지 복귀된 상태인지를 나타내기 위해 심벌들을 사용하고, 이들을 반전 가능 심벌 및 복귀 가능 심벌이라고 한다.
반전 및 복귀 명령은 자신이 속한 상태에 관계없이 모든 문장에 적용될 수 있음에 유의한다.
반전 명령에 대해 설명한다.
도 27a는 사용자가 반전 및 복귀 명령을 적용하는 것을 도시한다.
도 27a의 ①의 도면은 2개의 레이아웃을 도시하고 있으며, 2700에 도시된 바와 같이 각각의 레이아웃의 좌상 측에 반전 가능 심벌이 배치된다. 이 심벌은 대응하는 레이아웃이 반전 가능함을 나타낸다. 여기서, 사용자는 제2 레이아웃에 반전 명령을 적용했다고 가정한다. 사용자가 임의의 문장을 선택하고 명령을 적용하거나, 반전 가능 심벌이 손 제스처 검출 가능하면 사용자가 심벌에 손 제스처를 적용한다.
도 27a의 ②의 도면은 사용자가 레이아웃 상에 반전 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 리프 문장만이 (조정된 텍스트 박스 폭의 크기로) 표시된다. 또한, 반전 가능 심벌은 이제 복귀 가능 심벌(2702)로 변경되었다. 이 심벌은 레이아웃이 반전 상태에 있고 원래 뷰로 복귀될 수 있음을 나타낸다.
도 27a의 ③의 도면은 2개의 레이아웃을 도시하고, 두 번째 레이아웃은 반전된 상태이다. 여기서는 사용자가 두 번째 레이아웃에 복귀 명령을 적용했다고 가정한다. 사용자가 임의의 문장을 선택하고 명령을 적용하거나, 복귀 가능 심벌이 손 제스처 검출 가능한 경우 사용자는 심벌에 손 제스처를 적용한다.
도 27a의 ④의 도면은 사용자가 레이아웃 상에 복귀 명령을 적용한 후의 레이아웃을 도시한다. 레이아웃이 그의 원래 뷰로 복귀했다.
도 27b는 시연을 도시한다. 사용자가 문장 x.1.1.1.1과 x.4라는 2개의 새로운 문장을 수신했다고 가정한다. 도 27b의 ① 및 ③은 레이아웃이 반전되지 않는 동안 사용자가 문장을 수신하는 것을 보여 주며, 도 27b의 ② 및 ④는 레이아웃이 반전되는 동안 사용자가 문장을 수신하는 것을 나타낸다.
도 27b의 ①에서, 사용자는 문장 x.1.1.1.1을 수신하고, 이것은 문장 x.1.1.1 아래에 배치된다. 그러나, 도시된 바와 같이, 도 27b의 ②에서, 새로운 문장 x.1.1.1.1(2704)이 그의 부모 문장 x.1.1.1을 대체하고 사용자에게 표시된다. 이는 문장 x.1.1.1이 더 이상 리프 문장이 아니기 때문이다.
도 27b의 ③에서, 사용자는 문장 x.4를 수신하고, 이것은 문장 x.3 아래에 배치된다. 도 27b의 ④에서 x.4는 새로운 리프 문장이므로, 이것은 문장 x.3 아래에 배치되고 사용자에게 표시된다.
이제 증가(Increase) 및 감소(Decrease) 명령이 레이아웃 상에 어떻게 적용되는지를 설명한다.
이것은 장치가 적용시에 단지 전체 문장을 확대하는 비교적 간단한 명령이다. 따라서, 사용자가 증가 명령을 적용하면, 장치가 문장을 확대하고, 문장이 증가된 상태에 있는 동안 사용자가 감소 명령을 적용하면 장치는 확대를 취소하고, 문장은 감소된(원래의) 상태로 복귀한다.
도 28은 사용자가 증가 및 감소 명령을 적용하는 것을 도시한다.
도 28의 ①의 도면은 레이아웃을 도시하고, 증가 심벌들은 2800에 도시된 바와 같이 각각의 문장의 우상 코너에 배치된다. 이 심벌은 대응하는 레이아웃이 증가할 수 있음을 나타낸다. 여기에서는 사용자가 리프 문장(음영 텍스트 박스)에 증가 명령을 적용한 것으로 가정한다. 증가 심벌이 손 제스처 검출 가능한 경우, 사용자는 심벌에 손 제스처를 적용할 수 있다.
도 28의 ②의 도면은 장치가 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 전체 설명이 확대된다. 텍스트 박스 폭과 높이가 증가하고, 텍스트의 전체 폰트 크기도 증가했다. 2802의 심벌은 감소 심벌이며, 문장이 커지면 증가 심벌이 감소 심벌로 변경됨을 알기 쉽다.
도 28의 ③의 도면은 사용자가 확대된 문장에 감소 명령을 적용한 것을 나타낸다. 감소 심벌이 손 제스처 검출 가능한 경우 사용자는 심벌에 손 제스처를 적용할 수 있다.
도 28의 ④의 도면은 장치가 명령을 적용한 후의 레이아웃을 도시한다. 도시된 바와 같이, 확대된 문장은 더 이상 표시되지 않고, 레이아웃이 그의 원래 상태로 돌아왔다. 또한, 감소 심벌이 이제 증가 심벌로 변경되었다.
이제 모두(ALL) 명령이 레이아웃 상에 어떻게 적용되는지를 설명한다.
모두 명령으로 분류되는 8개의 명령이 있다. 8개의 명령은 모두 축소(Collapse All), 모두 확장(Expand All), 모두 숨기기(Hide All), 모두 표시(Show All), 모두 삭제(Delete All), 모두 UBD(UBD All), 반전 및 복귀이다. 제시되는 설정에서, 이들 명령은 디스플레이 상의 모든 주 문장에 적용된다.
도 29a는 3개의 레이아웃을 갖는 장치를 도시한다. 상부에는 8개의 명령이 표시된다(2900). 사용자는 언제든지 이 명령들 중 하나를 적용할 수 있다. 예시의 목적을 위해 3개의 레이아웃은 모두 동일하다. 제1 레이아웃은 완전히 확장된 상태이다. 제2 레이아웃은 완전히 축소되어 있으며, 주 문장은 숨겨진 상태이다. 마지막 레이아웃은 반전되어 있다.
이제, 사용자가 각각의 명령에 손 제스처를 적용하면 무슨 일이 발생하는지를 설명한다.
도 29b는 사용자가 4개의 명령을 적용한 후의 결과를 도시한다.
도 29b의 ①의 도면은 도 29a의 모든 주 문장에 모두 축소 명령을 적용한 후의 결과를 도시한다. 도시된 바와 같이, 제1 레이아웃은 완전 축소된 상태로 변경되었다. 제2 및 마지막 레이아웃은 변경되지 않은 상태로 남는다.
도 29b의 ②의 도면은 도 29a의 모든 주 문장에 모두 확장 명령을 적용한 후의 결과를 도시한다. 도시된 바와 같이, 제2 레이아웃은 완전히 확장된 상태로 변경되었지만, 주 문장은 여전히 숨겨진 상태이다. 제1 및 마지막 레이아웃은 변경되지 않은 상태로 남는다.
도 29b의 ③의 도면은 도 29a의 모든 주 문장에 모두 숨기기 명령을 적용한 후의 결과를 도시한다. 도시된 바와 같이, 제1 레이아웃의 모든 문장은 숨겨진 상태로 변경되었다. 여전히 반전된 상태인 마지막 레이아웃의 리프 문장은 숨겨진 상태로 변경된다.
도 29b의 ④의 도면은 도 29a의 모든 주 문장에 모두 표시 명령을 적용한 후의 결과를 도시한다. 도시된 바와 같이, 제2 레이아웃의 주 문장이 가시 상태로 변경되었다. 제1 및 마지막 레이아웃은 변경되지 않은 상태로 남는다.
도 29c는 사용자가 4개의 다른 명령을 적용한 후의 결과를 도시한다.
도 29c의 ①의 도면은 도 29a의 모든 주 문장에 모두 삭제 명령을 적용한 후의 결과를 도시한다. 도시된 바와 같이, 모든 문장은 이제 삭제된 상태이다. 또한, 반전 상태에 있었던 마지막 레이아웃이 그의 원래 뷰로 돌아갔다.
도 29c의 ②의 도면은 도 29a의 모든 주 문장에 모두 UBD 명령을 적용한 후의 결과를 도시한다. 도시된 바와 같이, 모든 문장은 이제 삭제된 상태이다. 또한, 반전 상태에 있었던 마지막 레이아웃이 그의 원래 뷰로 돌아갔다.
도 29c의 ③의 도면은 도 29a의 모든 주 문장에 반전 명령을 적용한 후의 결과를 도시한다. 도시된 바와 같이, 모든 문장은 이제 반전 상태이다.
도 29c의 ④의 도면은 도 29a의 모든 주 문장에 복귀 명령을 적용한 후의 결과를 도시한다. 도시된 바와 같이, 마지막 레이아웃이 그의 원래 뷰로 변경되었다.
이제, 자동 확장(AE)이라고 하는 특징을 소개한다. 이것은 명령이 아니라, 사용자가 새 문장을 수신하고 새로 수신된 문장의 상위 문장이 축소된 상태에 있을 때 장치에 의해 실행되는 프로세스이다. 예를 들어, 주 문장이 축소된 상태인 경우, 수신된 새 문장은 넘버링 x.a1...ak.r을 가지며, 이어서 분명히 주 문장은 소정 방식으로 확장되어야 한다. 여기에서는 상위 문장을 확장하는 네 가지 방법을 제시한다.
문장을 확장하는 4개의 상이한 방법을 설명하기 위해, 먼저 레이아웃을 소개하고, 그것이 어떻게 축소되는지를 설명한다.
도 30a는 레이아웃 및 그것이 어떻게 축소되는지를 도시한다. 장치가 기억 방법으로 동작한다고 가정한다. 도 30a의 ①에서, 레이아웃은 8개의 문장으로 구성된다. 도 30a의 ②에서 사용자는 x.1.1 문장을 축소시킨다. 도 30a의 ③에서 사용자는 x.2 문장을 축소시킨다. 도 30a의 ④에서 사용자가 주 문장을 축소시킨다. 여기에서 사용자가 새로운 문장을 수신하는 것으로 가정한다.
주 문장이 완전히 축소되지만, 그것을 또한 하위 문장들 중 하나가 축소된 상태에 있는 것으로서 볼 수 있는 동안에 사용자가 문장을 수신하고, 도 30a의 ⑤에 도시된 바와 같이 새로운 문장을 수신하는 것으로 가정한다는 점에 유의한다.
도 30b는 4개의 자동 확장을 도시한다. 언급한 바와 같이, 주 문장은 도 30a에 도시된 방식으로 축소되었고, 사용자가 문장을 수신한다고 가정한다.
도 30b의 ①은 이전 상태 자동 확장 유지(Maintain the Previous State Auto-Expand, MPS 자동 확장)를 도시한다. 이 방법에서는 사용자가 새 문장을 수신하고 주 문장이 확장될 때마다, 레이아웃은 주 문장이 축소되기 전에 그의 이전 상태로 복귀한다. 사용자는 새로운 문장(문장 x.3.1)을 수신한다. 주 문장이 축소되기 전에, 문장 x.2.1과 x.2의 문장은 축소된 상태였다는 점에 유의한다(도 30a의 ③). 따라서, 주 문장이 확장될 때, 그의 이전 상태를 유지되며, 문장 x.3.1은 그가 있어야 하는 위치에 배치된다.
도 30b의 ②는 공통 깊이 자동 확장(Common Depth Auto-Expand, CD 자동 확장)을 도시한다. 이 방법에서는 사용자가 새 문장을 수신하고 주 문장이 확장될 때마다, 수신된 문장과 동일한 깊이의 모든 문장이 축소된 상태가 된다. 사용자는 새로운 문장(문장 x.3.1)을 수신한다. 도시된 바와 같이, 새 문장은 깊이 2이므로, 깊이 2의 모든 문장은 축소된 상태가 된다.
도 30b의 ③은 일 분기 자동 확장(One Branch Auto-Expand, OB 자동 확장)을 도시한다. 이 방법에서는 사용자가 새 문장을 수신하고 주 문장이 확장될 때마다 새 문장이 속해야 하는 분기만 확장되고 나머지는 축소 상태가 된다. 사용자는 새 문장(문장 x.1.1.1.1)을 수신한다. 도시된 바와 같이, 새 문장의 넘버링은 x.1.1.1.1이므로, 문장 x.1, x.1.1 및 x.1.1.1이 확장되고, 새 문장이 그의 올바른 위치에 배치된다. 문장 x.2와 같은 다른 문장은 축소된 상태가 되어야 한다는 점에 유의한다(문장 x.3이 하위 문장들을 갖는 경우, 장치는 그 문장 또한 축소된 상태가 되게 할 것이다). 따라서, 새 문장의 넘버링이 x.a.b.c.d.2(x.a.b.c.d 문장의 제2 자식 문장)이면, 문장 x, x.a, x.a.b, x.a.b.c 및 x.a.b.c.d는 모두 확장 상태가 된다. 그러나, 하위 문장들을 갖는 문장들의 나머지는 축소된 상태가 되어야 한다.
도 30b의 ④는 모두 확장 자동 확장(Expand All Auto-Expand, EA 자동 확장)을 나타낸다. 이 방법에서는 사용자가 새 문장을 수신할 때마다 주 문장이 완전히 확장된다. 사용자는 새 문장(문장 x.1.1.1.1)을 수신한다. 도시된 바와 같이, 레이아웃이 완전히 확장되고 새 문장이 그의 올바른 위치에 배치된다.
이제, 사용자가 문장을 송신 또는 수신할 때마다 어떻게 레이아웃이 장치 상에 표시되는지를 설명한다. 레이아웃을 표시하는 두 가지 방법을 제시한다.
도 31a는 제1 방법을 도시한다. 이 방법에서는 사용자가 문장을 수신할 때마다 현재 레이아웃이 변경되지 않고 새 문장이 현재 레이아웃의 정확한 사본에 배치된다. 이를 표시 방법 1이라고 한다. 도 31a의 ①에서 사용자는 문장, 즉 문장 x를 수신한다. 도 31a의 ②에서 사용자는 문장 x.1을 수신한다. 도시된 바와 같이, 이전 레이아웃(문장 x)은 변경되지 않지만 새 문장은 레이아웃(문장 x)의 사본에 배치된다. 도 31a의 ③에서 사용자는 문장 x.2를 수신한다. 도 31a의 ④에서 사용자는 문장 x.1.1을 수신한다. 도시된 바와 같이, 표시 방법 1에서, 사용자는 사용자들 간의 상호작용이 어떻게 진행되는지를 쉽게 알 수 있다.
도 31b는 제2 방법을 도시한다. 이 방법에서는 방법 1과 달리 장치가 새 문장을 수신할 때 레이아웃의 사본을 생성하지 않는다. 이를 표시 방법 2라고 한다. 아이디어를 상세히 설명하기 위해, 장치의 사용자가 다른 사용자들에게 문장들을 송신한다고 가정한다. 도 31b의 ①에서, 사용자는 각각 사용자 A와 사용자 D로부터 2개의 문장, 즉 문장 x와 문장 y를 수신한다. 도 31b의 ②에서 사용자는 문장(문장 x.1)을 송신한다. 도시된 바와 같이, 전체 레이아웃(주 문장이 문장 x임)은 새 문장으로 취급되고, 스크린의 바닥에 배치된다. 도 31b의 ③에서 사용자는 사용자 C로부터 문장 z를 수신한다. 도시된 바와 같이, 새 문장은 스크린 바닥에 배치된다. 도 31b의 ④에서 사용자는 사용자 C로부터 문장 x.1.1을 수신한다. 다시, 전체 레이아웃은 새 문장으로 취급되고, 스크린의 바닥에 배치된다. 도시된 바와 같이, 표시 방법 2에서는 주 문장에 하위 문장이 추가될 때마다 전체 레이아웃이 문장으로 취급되고 스크린 바닥에 표시된다.
지금까지, 명령들을 단지 독립적으로 설명했다. 즉, 그들이 어떻게 함께 결합될 수 있는지를 설명하지 않았다. 이 섹션에서는 지금까지 설명한 모든 명령을 결합하고, 그들이 어떻게 표시되는지를 설명한다. 언급한 바와 같이 명령들은 내부화, 외부화 또는 맞춤화될 수 있다. 또한, 임의의 명령은 동시에 내부화, 외부화 및 맞춤화될 수 있다. 여기에 제시된 것은 명령들을 사용자에게 제공하여 선택된 명령을 실행하게 하는 방법을 보여준다. 도 32a는 명령이 사용자에게 제공될 수 있는 모든 가능한 방법을 도시한다.
도 32a의 ①의 도면은 명령이 내부화, 외부화 또는 맞춤화되는 가능한 사례들을 도시한다. 예를 들어, 명령이 내부화되면, 1을 할당하고 그렇지 않으면 0을 할당한다. 따라서, 표의 제1 행에 표시된 것처럼, (0, 0, 1)은 명령이 단지 맞춤화된다는 것을 의미한다. 또한, 표의 마지막 행에 표시된 것처럼, (1, 1, 1)은 명령이 내부화, 외부화 및 맞춤화됨을 의미한다. 예를 들어, 삭제 명령이 (1, 1, 1)이면, 사용자는 내부화, 외부화 및 맞춤화된 명령에 의해 명령을 적용할 수 있다. 쉽게 참조할 수 있도록 각각의 튜플에 숫자를 할당한다. 단순화를 위해 튜플을 이진수로 간주한다. 따라서, 튜플(1, 0, 1)에 5가 할당되고, 기타 등등이다.
도 32a의 ②의 도면은 18개의 모든 명령이 내부화되거나, 외부화되거나, 맞춤화된 모든 가능한 사례를 도시한다. 따라서, 가능한 조합의 수는 718=1,628,413,597,910,449(1600조 이상)이다. 그러나, 일부 명령의 특성은 특정 작업을 수행하고 실행 취소하는 것이다. 따라서, 상호 배타적인 명령들을 하나의 그룹으로 그룹화할 수 있다. 예를 들어, 숨기기 및 표시 명령은 상호 배타적인 명령이다. 이들은 동시에 문장에 적용될 수 없다. 따라서, 이러한 상호 배타적인 명령들의 쌍을 볼 수 있으며, 이들을 하나의 명령인 것처럼 그룹화할 수 있다. 상호 배타적인 명령들을 함께 그룹화할 필요는 없다는 점에 유의한다. 숨기기 명령은 단지 내부화될 수 있지만 표시 명령은 단지 외부화될 수 있다.
도 32a의 ③의 도면은 상호 배타적인 명령들을 하나로 결합하였고 이것은 12개의 "명령"을 제공한다는 것을 제외하고는 도 32a의 ②로부터의 동일한 표를 도시한다. 따라서, 표는 리프 문장이 아닌 문장에 대해 사용자에게 명령들을 제공하는 712=13,841,287,201(130억 초과)개의 가능한 방법 및 리프 문장에 대해 사용자에게 명령들을 제공하는 78=5,764,801개의 가능한 방법이 존재한다는 것을 나타낸다. 이는 상호 배타적인 명령들이 동일한 방식으로 사용자들에게 제공됨을 의미한다. 예를 들어, 숨기기 명령이 외부화된 경우, 그의 상호 배타적인 명령인 표시 명령도 외부화된다.
명령들을 설정하는 1600조(718)개의 가능한 방법으로부터, 특정 설정을 제공한다.
다음과 같은 18의 조합을 고려할 수 있다.
(5, 2, 2, 2, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4)18
이것은 응답 명령이 내부화되고 맞춤화되고, 조합이 숫자 5에 의해 표현된다는 것을 의미한다. 축소, 확장, 숨기기 및 표시 명령은 단지 외부화되며 숫자 2에 의해 표현된다. 삭제, 수정, UBD, 반전 및 복귀 명령은 단지 내부화되며, 숫자 4에 의해 표현된다. 증가 및 감소 명령은 단지 맞춤화되며, 숫자 1에 의해 표현된다. 마지막으로, 모두 명령들의 나머지는 숫자 4로 표현된다.
상호 배타적인 명령들과 12개의 명령의 조합된 버전을 사용하여, 다음과 같이 조합을 표현할 수 있다.
(5, 2, 2, 4, 4, 4, 4, 1, 4, 4, 4, 4)12
도 32b는 다음을 도시한다.
(5, 2, 2, 4, 4, 4, 4, 1, ... )12
계속하기 전에, 프롬프트 명령 표시 영역을 누름 및 유지(press-and-hold)로서 프롬프트하기 위한 "손 제스처"를 정의한다. 또한, 응답 명령은 맞춤화될 뿐만 아니라 내부화되므로, 맞춤화된 응답 명령에 좌우 스와이프를 할당한다. 맞춤화된 증가 및 감소 명령에 대해 더블 탭을 할당한다. 또한, 심벌들은 손 제스처 적용 가능하며, 단순 탭(simple tap)을 할당하여 장치가 사용자의 입력을 확인하도록 한다.
도 32b에 도시된 바와 같이, 사용자는 문장(3200)에 누름 및 유지를 적용한다. 장치가 이러한 특정 손 제스처를 검출하면, 장치는 프롬프트 명령 표시 영역(3202)을 표시하고, 내부화되고 적용 가능한 모든 명령을 표시한다. 표시된 명령들은 응답, 수정, 삭제, 반전, 모두 축소, UBD 및 모두 UBD이다. 복귀, 모두 확장, 모두 숨기기 및 모두 표시 명령은 내부화되지만, 이러한 명령은 적용 가능하지 않기 때문에 표시되지 않는다.
축소, 확장, 숨기기 및 표시 명령이 외부화되기 때문에, 이들 명령은 프롬프트 명령 표시 영역에 표시되지 않는다. 또한, 임의의 문장 상에 이들 명령을 표시하는 대신, 심벌들은 상기 명령들이 적용 가능하다는 것을 나타내는 데 사용된다. 도시된 바와 같이, 외부화된 축소 명령은 축소 가능 심벌(3204)로 대체된다. 사용자가 심벌 상에 간단한 탭을 적용하면, 장치는 주 문장을 축소하고, 심벌은 확장 가능 심벌로 바뀐다. 사용자가 확장 가능 심벌에 간단한 탭을 적용하면, 장치는 주 문장을 확장한다. 이것은 숨기기 및 표시 명령에 동일하게 적용된다. 도시된 바와 같이, 외부화된 숨기기 명령은 숨김 가능 심벌(3206)로 대체된다. 사용자가 심벌 상에 간단한 탭을 적용하면, 장치는 리프 문장을 숨기고, 심벌은 표시 가능 심벌로 바뀐다. 사용자가 표시 가능 심벌에 간단한 탭을 적용하면 장치는 리프 문장을 표시한다.
도 32c는 내부에 표시되는 내부화된 명령들을 갖는 명령 표시 영역을 나타내는 예시적인 도면으로 구성된다. 또한, 외부화된 명령들은 심벌들을 사용하여 도시된다.
이제 명령들이 어떻게 실행되는지에 대한 모든 흐름도를 제공한다.
흐름도들에서, 일부 상황들에서, 사용자가 임의의 문장에 명령을 적용하는 것으로 가정하고, 이를 문장 x.a1...ak에 의해 표시한다.
도 33a는 특징 텍스트 폭 조정(TWA)의 흐름도를 도시한다.
도 33a의 ①의 흐름도는 TWA의 핵심을 도시하고, 이것을 텍스트 폭 조정의 프로세스라고 한다. 이 프로세스는 장치가 세로 모드에 있을 때 적용된다. 이 프로세스가 실행되면, 장치는 모든 텍스트 길이 중에서 텍스트 길이들의 수를 선택한다. 그 이유는 일부 상황들에서는 일부 텍스트 길이가 텍스트 박스 폭을 결정할 때 제외되어야 하기 때문이다. 장치는 선택한 텍스트 길이들을 사용하여, 알고리즘들 또는 수학 함수들에 의존하는 깊이 k에서의 기준 폭 R(k)를 결정한다(최대 폭 M 및 최소 폭 m은 텍스트 박스 폭들을 결정하는 데 중요한 역할을 하기 때문에, 장치는 기준 폭을 결정할 때 이 값들을 사용한다는 점에 유의한다). 이는 사용되는 레이아웃(또는 모델)에 기초하여 장치가 모든 깊이에서의 텍스트 박스 폭들을 계산(또는 결정)할 수 있음을 의미한다. 예를 들어, 레이아웃의 최저 깊이가 4이고 기준 폭이 R(2)인 경우, 깊이 2의 문장들의 텍스트 박스 폭들은 R과 동일하다. 또한, 깊이 R에서의 값 R에 기초하여, 장치는 깊이 0, 1, 3 및 4에서의 텍스트 박스 폭들의 나머지를 계산한다. 이들 텍스트 박스 폭이 결정되면, 텍스트 박스에 각각의 문장의 텍스트가 표시된다.
도 33a의 ②의 흐름도는 회전시의 TWA의 핵심을 도시하고, 이를 회전시의 텍스트 폭 조정의 프로세스라고 한다. 이 프로세스는 장치가 가로 모드일 때 적용된다. 이 프로세스는 ①에서의 그것과 동일하지만, 차이는 장치가 가로 모드일 때 최대 폭 M과 최소 폭 m이 더 크다는 것이다. M과 m의 2개의 더 큰 값을 각각 M*과 m*로 나타낸다. 따라서, 장치는 M* 및 m*을 이용하여 깊이 k에서의 기준 폭을 다시 계산한다.
도 33a의 ③의 흐름도는 장치가 세로 모드에서 가로 모드로 전환되었음을 검출할 때 장치에 의해 실행되는 단계들을 도시한다. 흐름도에서, 장치는 장치가 세로 모드에서 가로 모드로 전환되었음을 검출한다. 그런 다음, 장치는 TWA-R의 프로세스를 실행하고 레이아웃을 다시 그린다.
도 33a의 ④의 흐름도는 장치가 가로 모드에서 세로 모드로 전환되었음을 검출할 때 장치에 의해 실행되는 단계들을 도시한다. 흐름도에서, 장치는 장치가 가로 모드에서 세로 모드로 전환되었음을 검출한다. 그런 다음, 장치는 TWA의 프로세스를 실행하고 레이아웃을 다시 그린다.
장치가 세로 모드 및 가로 모드에 대한 텍스트 박스 폭들을 미리(장치가 문장을 수신할 때마다) 찾아 저장하면, 장치가 모드 변경을 검출할 때마다 2개의 프로세스를 생략하고 다시 그리기를 시작할 수 있다.
도 33b는 사용자가 다른 사용자(들)에게 문장을 송신하는 흐름도를 도시한다. 먼저, 사용자는 사용자가 텍스트를 입력할 수 있게 하는 명령에 손 제스처를 적용한다. 그런 다음, 사용자는 사용자가 문장을 송신하기를 원하는 수신자(들)를 선택한다. 이 작업이 완료되면 장치에 소프트 키보드가 표시된다. 사용자는 텍스트를 입력한 다음, 송신 버튼 또는 만료 설정 및 송신 버튼에 손 제스처를 적용한다. 사용자가 만료 설정 및 송신 버튼에 손 제스처를 적용하면, 장치는 사용자가 만료 시간을 입력할 수 있는 작은 디스플레이를 표시한다. 사용자는 만료 시간(또는 지속 기간)을 입력하고, 다른 사용자(들)가 시간 만료 문장에 응답할 수 있는지를 선택한다. 사용자는 OK 버튼에 손 제스처를 적용한다. 그런 다음, 명령의 내부 상태들이 갱신되고, 장치는 문장이 시간 만료되는 것을 확인한다. 이제, 장치는 문장을 생성한다. 이것은 (1) 장치가 빈 문장을 생성하는 단계, (2) 장치가 문장에 주 키를 할당하는 단계, (3) 장치가 빈 문장에 생성된 텍스트를 할당하는 단계, (4) 장치가 문장의 내부 상태들을 설정하는 단계 및 (5) 장치가 다른 필요한 정보를 저장하는 단계와 같은 여러 단계로 구성된다. 이 단계가 완료되면, 장치는 텍스트 길이 풀에 TWA를 적용하고, 새 텍스트 박스 폭들 및 높이들을 결정하며, 심벌들의 내부 문장들이 업데이트된다. 레이아웃은 표시 방법 1 또는 표시 방법 2를 사용하여 표시된다. 마지막으로, 장치는 텍스트와 주 키를 수신자(들)에게 송신한다. 또한, 내부 코드들, 문장이 시간 만료되는지의 여부, 송신자의 전화번호 또는 멀티미디어 파일들과 같은 다른 정보를 송신한다.
도 33c는 사용자가 다른 사용자들로부터 문장을 수신하는 흐름도를 도시한다. 먼저, 사용자는 다른 사용자로부터 문장을 수신한다. 다음 단계(점선 박스)에서, 장치는 수신된 문장의 부모 문장이 표시되는지 검사한다(이것은 장치가 삭제 방법 2에서 동작하는 경우에 대한 것임). 그러한 경우, 장치는 삭제된 텍스트 박스들을 표시한다. 장치가 삭제 방법 1에서 동작하면, 이 단계는 생략될 수 있다. 다음으로, 사용자가 문장을 송신하는 경우와 마찬가지로, 장치는 수신된 텍스트로 문장을 생성하는 단계들을 거치며, 장치는 TWA를 적용하고, 필요한 모든 정보를 업데이트하고, 마지막으로, 수신된 문장을 사용자에게 표시한다. 레이아웃은 표시 방법 1 또는 표시 방법 2를 사용하여 표시된다. 언급된 바와 같이, 수신된 문장의 상위 문장 중 하나가 축소된 상태에 있을 때, 장치는 축소된 문장을 확장하고, 새 문장을 그의 올바른 위치에 배치해야 한다. 이것은 자동 확장이며, 4개의 다른 종류의 자동 확장들의 흐름도들이 나중에 제공된다.
도 33d는 장치가 만료된 문장들을 처리하는 흐름도를 도시한다.
도 33d의 ①의 흐름도는 RMS 애플리케이션이 실행되는 동안 문장이 만료되는 경우를 도시한다. 먼저, 문장 x.a1...ak이 만료된다. 장치는 만료된 문장 옆에 문장이 삭제될 것이라는 노트를 표시한다(사전 통지가 만료되기 수 분 전에 사용자에게 표시될 수 있다). 장치는 사용자의 응답을 기다린다. 장치가 사용자의 응답을 확인하면, 장치는 만료된 문장에 모두 삭제 명령 프로세스(나중에 설명됨)를 적용한다. 이 프로세스는 선택된 문장(이 경우 만료된 문장) 및 그의 모든 하위 문장(있는 경우)을 삭제한다. 그런 다음, TWA를 적용하고 내부 상태를 업데이트하는 것과 같이 레이아웃의 물리적 성질이 업데이트된다.
도 33d의 ②의 흐름도는 RMS 애플리케이션이 실행되지 않는 동안 문장이 만료되는 경우를 나타낸다(이것은 장치가 턴오프된 경우를 포함한다). 먼저, 문장 x.a1...ak는 RMS 애플리케이션이 실행되지 않는 동안 만료된다. 사용자는 RMS 애플리케이션을 시작한다. 장치는 만료된 문장 옆에 문장이 삭제될 것이라는 노트를 하나씩 표시한다. 장치는 사용자의 응답(들)을 기다린다. 장치가 사용자의 응답(들)을 확인하면, 장치는 모든 만료된 문장에 모두 삭제 명령 프로세스를 적용한다. 이 프로세스는 선택된 문장(이 경우 만료된 문장) 및 그의 모든 하위 문장(있는 경우)을 삭제한다. 그런 다음, TWA를 적용하고 내부 상태를 업데이트하는 것과 같이 레이아웃의 물리적 성질이 업데이트된다.
이제, 18개의 명령에 대한 흐름도들을 제공한다. 제시되는 흐름도들은 명령의 핵심이다. 나중에, 사용자가 어떻게 문장을 선택하고 명령을 적용하는지를 제시한다.
도 33e는 응답 명령의 핵심을 도시하며, 이를 응답 명령의 프로세스라고 한다. 이 프로세스는 기본적으로 문장들을 송신하는 프로세스와 동일하다.
도 33F는 축소, 확장, 모두 축소 및 모두 확장 명령들의 핵심을 도시한다.
도 33F의 ①의 흐름도는 축소 명령의 핵심을 도시하며, 이를 축소 명령의 프로세스라고 한다. 프로세스가 실행되면, 장치는 문장의 내부 상태를 축소 상태로 변경한다. 이어서, 문장 앞의 축소 가능 심벌이 확장 가능 심벌로 변경된다(축소되는 하위 문장들의 수가 카운트되어 심벌 내에 표시된다). 이어서, 장치는 문장 x.a1...ak의 하위 문장을 표시하지 않는다. 마지막으로, 축소시의 텍스트 폭 조정(TWA-C)이 실행된다(이 단계는 생략될 수 있다). TWA-C가 하는 것은 장치가 축소 상태에서 문장들의 하위 문장들 없이 문장들에 TWA를 적용하는 것이다.
도 33F의 ②의 흐름도는 기억 확장 명령의 핵심을 도시하고, 이를 확장 명령(기억)의 프로세스라고 한다. 프로세스가 실행되면, 장치는 문장의 내부 상태를 확장 상태로 변경한다. 이어서, 문장 앞의 확장 가능 심벌이 축소 가능 심벌로 변경된다(축소되는 하위 문장들의 수는 더 이상 심벌 내에 표시되지 않는다). 그런 다음, 장치는 문장 x.a1...ak의 하위 문장들을 표시한다. 기억 방법에서, 이것은 반복 프로세스이다. 장치는 문장 x.a1...ak의 모든 하위 문장을 트리 탐색 방식으로 검사한다. 장치는 문장 x.a1...ak의 자식 문장 중 하나로 시작하여, 그것이 확장 상태인지 검사한다. 확장 상태이면, 문장과 심벌이 표시된다. 문장이 축소된 상태인 경우에도 마찬가지이다. 그러나, 문장과 심벌이 표시되면, 다른 분기로 이동한다. 또한, 하위 문장이 리프 문장인 경우, 장치는 문장을 표시하고 다른 분기로 이동한다. 따라서, 하위 문장이 축소된 상태이거나 리프 문장인 경우, 장치는 그들을 종점으로 간주한다. 마지막으로, 확장시의 텍스트 폭 조정(TWA-E)이 실행된다(이 단계는 생략될 수 있다). TWA-E 프로세스는 TWA-C 프로세스의 반대이다. 다시 말해, 방금 확장된 문장들을 포함하여 레이아웃의 모든 문장들에 대해 TWA가 적용된다.
도 33F의 ③의 흐름도는 비기억 확장 명령의 핵심을 도시하며, 이를 확장 명령(비기억)의 프로세스라고 한다. 프로세스가 실행되면, 장치는 문장의 내부 상태를 확장 상태로 변경한다. 이어서, 문장 앞의 확장 가능 심벌이 축소 가능 심벌로 변경된다(축소되는 하위 문장들의 수는 더 이상 심벌 내에 표시되지 않는다). 그런 다음, 장치는 문장 x.a1...ak의 하위 문장들을 표시한다. 마지막으로, 확장시의 텍스트 폭 조정(TWA-E)이 실행된다(이 단계는 생략될 수 있다).
도 33F의 ④의 흐름도는 모두 축소 명령의 핵심을 나타내며, 이를 모두 축소 명령의 프로세스라고 한다. 프로세스가 실행되면, 장치는 문장 x.a1...ak 및 그의 모든 하위 문장의 내부 상태를 축소 상태로 변경한다. 이어서, 문장 앞의 축소 가능 심벌이 확장 가능 심벌로 변경된다(축소되는 하위 문장들의 수가 카운트되어 심벌 내에 표시된다). 이어서, 장치는 문장 x.a1...ak의 하위 문장을 표시하지 않는다. 마지막으로, 축소시의 텍스트 폭 조정(TWA-C)이 실행된다(이 단계는 생략될 수 있다).
도 33F의 ⑤의 흐름도는 모두 확장 명령의 핵심을 도시하고, 이를 모두 확장 명령의 프로세스라고 한다. 프로세스가 실행되면, 장치는 문장 x.a1...ak 및 그의 모든 하위 문장의 내부 상태를 확장 상태로 변경한다. 이어서, 문장 앞의 확장 가능 심벌이 축소 가능 심벌로 변경된다(축소되는 하위 문장들의 수는 더 이상 심벌 내에 표시되지 않는다). 그런 다음, 장치는 문장 x.a1...ak의 모든 하위 문장을 표시한다. 마지막으로, 축소시의 텍스트 폭 조정(TWA-C)이 실행된다(이 단계는 생략될 수 있다).
도 33g는 4개의 자동 확장, 즉 이전 상태 유지(MPS) 자동 확장, 공통 깊이(CD) 자동 확장, 일 분기(OB) 자동 확장 및 모두 확장(EA) 자동 확장의 흐름도들을 도시한다.
흐름도들은 기억 방법 또는 비기억 방법에 적용될 수 있음을 주목한다.
또한, 수신된 문장이 문장 x.a1...ak.r이고, 그의 상위 문장인 문장 x.a1...am이 축소된 상태라고 가정한다. 명백하게, 문장 x.a1...am은 문장 x.a1...ak.r의 직접 부모 문장들 중 하나이다.
장치가 새로 수신된 문장의 내부 설정들을 완료한 후에 다음의 4개의 흐름도가 실행될 수 있다.
도 33g의 ①의 흐름도는 MPS 자동 확장을 도시한다. 장치가 새로운 문장(문장 x.a1...ak.r)을 수신할 때마다, 장치는 문장 x.a1...am에서 시작하여 문장 x.a1...ak.r의 직접 부모 문장들에 확장 명령을 적용한다. 따라서, 이것은 확장 명령이 문장 x.a1...am, x.a1...am.am+1 등(문장 x.a1...am...ak까지)에 적용된다는 것을 의미한다.
도 33g의 ②의 흐름도는 CD 자동 확장을 도시한다. 장치가 새로운 문장(문장 x.a1...ak.r)을 수신할 때마다, 장치는 문장 x.a1...ak.r보다 깊이가 높은 모든 문장에 확장 명령들을 적용한다. 그런 다음, 장치는 문장 x.a1...ak.r과 동일한 깊이에 있는 모든 문장에 축소 명령을 적용한다.
도 33g의 ③의 흐름도는 OB 자동 확장을 도시한다. 장치가 새로운 문장(문장 x.a1...ak.r)을 수신할 때마다, 장치는 문장 x.a1에서 시작하여 문장 x.a1...ak.r의 직접 부모 문장들에 확장 명령들을 적용한다. 따라서, 이것은 확장 명령이 문장 x.a1, x.a1.a2, x.a1.a2.a3 등에(문장 x.a1...ak.r까지) 적용된다는 것을 의미한다. 그런 다음, 장치는 (문장 x.a1을 제외하고) 깊이 1의 모든 문장에 축소 명령을 적용한다. 즉, 주 문장의 모든 자식 문장(문장 x.a1 제외)에 적용한다.
도 33g의 ④의 흐름도는 EA 자동 확장을 도시한다. 장치가 새로운 문장(문장 x.a1...ak.r)을 수신할 때마다 장치는 주 문장에 모두 확장 명령을 적용한다.
도 33h는 삭제 및 모두 삭제 명령의 핵심을 도시한다.
도 33h의 ①의 흐름도는 삭제 명령(삭제 방법 1)의 핵심을 도시하고, 이를 삭제 명령의 프로세스(방법 1)라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak의 내부 상태를 삭제 상태로 변경한다. 이어서, 문장의 텍스트는 표시되지 않지만, 텍스트 박스는 여전히 강조 표시된다. 이어서, 텍스트 박스의 높이가 디폴트 높이로 줄어든다. 이어서, 문장이 삭제 상태가 아닌 경우 적용 가능한 심벌들(예를 들어, 숨김 가능 및 표시 가능 심벌들)이 더 이상 표시되지 않는다. 마지막으로, 삭제시의 텍스트 폭 조정(TWA-D)이 적용된다. TWA-D가 수행하는 것은 장치가 삭제 상태의 문장들을 제외한 나머지 문장들에 TWA를 적용하는 것이다.
도 33h의 ②의 흐름도는 삭제 명령(삭제 방법 2)의 핵심을 도시하고, 이를 삭제 명령의 프로세스(방법 2)라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak의 내부 상태를 삭제 상태로 변경한다. 이어서, 장치는 삭제된 문장 자체가 SDL 분기의 일부가 되는지 검사한다. 그러한 경우, 문장이 더 이상 표시되지 않고, 문장 x.a1...ak-1(문장 x.a1...ak의 부모 문장)의 심벌들이 조정된다. 부모 문장(문장 x.a1...ak-1)이 "가시적으로" 리프 문장이 되므로 이것은 필요하다. 반면에, 삭제된 문장이 SDL 분기를 형성하지 않으면, 단지 문장의 텍스트가 표시되지 않고, 텍스트 박스가 강조된다. 마지막으로, 삭제시의 텍스트 폭 조정(TWA-D)이 실행된다.
도 33h의 ③의 흐름도는 모두 삭제 명령(삭제 방법 1)의 핵심을 도시하고, 이를 모두 삭제 명령의 프로세스(방법 1)라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak의 내부 상태를 변경하고, 그의 모든 하위 문장은 삭제 상태로 설정된다. 이어서, 문장 및 그의 하위 문장의 텍스트는 표시되지 않지만 텍스트 박스는 여전히 강조 표시된다. 이어서, 삭제된 텍스트 박스의 높이가 디폴트 높이로 줄어든다. 이어서, 문장이 삭제 상태가 아닌 경우 적용 가능한 심벌들(예를 들어, 숨김 가능 및 표시 가능 심벌들)이 더 이상 표시되지 않는다. 마지막으로, 삭제시의 텍스트 폭 조정(TWA-D)이 적용된다.
도 33h의 ④의 흐름도는 모두 삭제 명령(삭제 방법 2)의 핵심을 도시하고, 이를 모두 삭제 명령의 프로세스(방법 2)라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak 및 그의 모든 하위 문장의 내부 상태를 삭제 상태로 변경한다. 이어서, 문장 x.a1...ak의 모든 하위 문장은 SDL 분기가 되므로, 모든 하위 문장은 표시되지 않는다. 이어서, 장치는 문장 x.a1...ak가 SDL 분기의 일부가 되는지 검사한다. 그러한 경우, 문장 x.a1...ak은 표시되지 않는다. 마지막으로, 삭제시의 텍스트 폭 조정(TWA-D)이 실행된다.
도 33i는 숨기기, 표시, 모두 숨기기 및 모두 표시 명령의 핵심을 도시한다.
도 33i의 ①의 흐름도는 숨기기 명령의 핵심을 도시하며, 이를 숨기기 명령의 프로세스라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak의 내부 상태를 숨김 상태로 변경한다. 이어서, 텍스트 박스의 높이가 디폴트 높이로 감소한다. 이어서, 텍스트는 감소된 텍스트 박스 내에서 작아진다. 마지막으로, 숨김 가능 심벌이 표시 가능 심벌로 변경된다.
도 33i의 ②의 흐름도는 표시 명령의 핵심을 도시하고, 이를 표시 명령의 프로세스라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak의 내부 상태를 가시 상태로 변경한다. 이어서, 텍스트 박스의 높이가 그의 원래 높이로 증가한다. 이어서, 텍스트가 텍스트 박스 내에 완전히 표시된다. 마지막으로, 표시 가능 심벌이 표시 가능 숨김 가능 심벌로 변경된다.
도 33i의 ③의 흐름도는 모두 숨기기 명령의 핵심을 도시하며, 이를 모두 숨기기 명령의 프로세스라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak 및 그의 모든 하위 문장의 내부 상태를 숨김 상태로 변경한다. 이어서, 문장 x.a1...ak 및 그의 모든 하위 문장의 텍스트 박스 높이가 디폴트 높이로 줄어든다. 이어서, 문장 x.a1...ak 및 그의 모든 하위 문장의 텍스트가 감소된 텍스트 박스 내에서 작아진다. 마지막으로, 숨김 가능 심벌이 표시 가능 심벌로 변경된다.
도 33i의 ④의 흐름도는 모두 표시 명령의 핵심을 도시하고, 이를 모두 표시 명령의 프로세스라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak 및 그의 모든 하위 문장의 내부 상태를 가시 상태로 변경한다. 이어서, 문장 x.a1...ak 및 그의 모든 하위 문장의 텍스트 박스 높이가 그들의 원래 높이로 증가한다. 이어서, 문장 x.a1...ak 및 모든 하위 문장의 텍스트가 완전히 표시된다. 마지막으로, 표시 가능 심벌이 숨김 가능 심벌로 변경된다.
도 33j는 UBD 및 모두 UBD 명령의 핵심을 도시한다. 언급했듯이, UBD 및 모두 UBD 명령은 삭제 및 모두 삭제 명령과 동일하지만, 장치는 삭제 작업이 끝날 때 장치 소유자가 요청하는 문장(들)을 삭제하기 위한 신호를 다른 사용자들에게 송신한다는 점이 다르다. 다른 사용자(들)가 요청을 수신하고 결정을 내리면, 장치는 피드백 신호를 문장 소유자에게 송신한다.
도 33j의 ①의 흐름도는 임의의 삭제 동작이 뒤따르는 프로세스를 도시한다. 도면에 도시된 바와 같이, 장치가 삭제 명령의 프로세스(삭제 방법 1 또는 삭제 방법 2)를 실행하면 장치는 UBD 신호 및 관련 정보를 다른 사용자들에게 송신한다.
도 33j의 ②의 흐름도는 임의의 모두 삭제 동작이 뒤따르는 프로세스를 도시한다. 도면에 도시된 바와 같이, 장치가 모두 삭제 명령의 프로세스(삭제 방법 1 또는 삭제 방법 2)를 실행하면 장치는 모두 UBD 신호 및 관련 정보를 다른 사용자들에게 송신한다.
도 33j의 ③의 흐름도는 다른 사용자가 문장의 소유자로부터 요청을 수신하는 경우를 도시한다. 먼저, 사용자(수신자)는 소유자로부터 UBD 신호 및 문장 x.a1...ak의 주 키를 수신한다. 장치는 먼저 대응하는 문장이 삭제 상태인지 검사한다. 문장이 삭제 상태이면, 장치는 아무 작업도 수행하지 않고 프로세스를 종료한다(이것은 다른 사용자가 소유자의 요청에 동의하는 것으로 간주된다). 삭제 상태가 아니면, 장치는 문장 x.a1...ak의 상위 문장 또는 문장 자체가 축소 상태인지 검사한다. 그러한 경우, 장치는 문장에 모두 확장 명령을 적용한다. 장치는 사용자에게 문장을 삭제하는 데 동의하는지 묻는다. 장치가 사용자의 동의를 검출하면, 삭제 명령의 프로세스(방법 1 또는 방법 2)가 문장에 적용된다. 그런 다음, 장치는 사용자 ID 및 사용자가 문장 삭제에 동의하고 문장을 삭제했다는 수락 신호를 송신한다. 사용자가 문장 삭제에 동의하지 않으면, 장치는 사용자 ID 및 사용자가 문장 삭제에 동의하지 않았다는 거절 신호를 송신한다.
도 33j의 ④의 흐름도는 다른 사용자가 문장의 소유자로부터 요청을 수신하는 경우를 도시한다. 먼저, 사용자(수신자)는 소유자로부터 모두 UBD 신호 및 문장 x.a1...ak의 주 키를 수신한다. 장치는 먼저 중첩되지 않은 문장들을 찾는다. 삭제된 모든 문장이 삭제하도록 요청된 문장과 중첩되면, 장치는 아무 작업도 수행하지 않고 프로세스를 종료한다(이는 다른 사용자가 소유자의 요청에 동의하는 것으로 간주된다). 적어도 하나의 중첩되지 않은 문장이 있으면 장치는 문장 x.a1...ak의 상위 문장 또는 문장 자체가 축소 상태인지 검사한다. 그러한 경우, 장치는 문장에 모두 확장 명령을 적용한다. 또한, 장치는 하위 문장이 삭제 상태인지 검사한다. 그러한 경우, 장치는 축소 상태에 있는 문장 x.a1...ak의 모든 하위 문장에 모두 확장 명령을 적용한다. 장치는 사용자에게 문장 삭제에 동의하는지 묻는다. 장치가 사용자의 동의를 검출하면, 모두 삭제(방법 1 또는 방법 2) 명령의 프로세스가 실행된다. 그런 다음, 장치는 사용자 ID 및 사용자가 문장 삭제에 동의했다는 수락 신호를 송신한다. 사용자가 문장 삭제에 동의하지 않으면 장치는 사용자 ID 및 사용자가 문장 삭제에 동의하지 않았다는 거절 신호를 송신한다.
도 33j의 ⑤의 흐름도는 소유자가 다른 사용자가 문장을 삭제하기로 결정했는지 여부에 대한 통지를 수신하는 것을 도시한다. 먼저, 장치는 다른 사용자들로부터 사용자 ID 및 수락/거절 신호를 수신한다. 그런 다음, 이들 정보에 기초하여, 다른 사용자들이 내린 결정이 소유자에게 표시된다.
도 33k는 수정 명령의 핵심을 도시한다.
도 33k의 ①의 도면은 수정 명령의 핵심을 도시하고, 이를 수정 명령의 프로세스라고 한다. 프로세스가 실행되면, 소프트 키보드가 표시되고, 그 위에 취소(Cancel) 버튼이 표시되고, 적용(Apply) 버튼이 비활성화된다. 장치는 사용자의 수정을 기다린다. 장치가 텍스트의 변경을 검출하면, 텍스트가 적어도 하나의 문자로 구성되어 있는지 검사한다. 그렇지 않은 경우, 장치는 사용자 입력을 기다린다. 그러한 경우, 장치는 적용 명령을 활성화다. 사용자는 적용 명령에 손 제스처를 적용한다. 문장 x.a1...ak의 텍스트가 새 텍스트로 대체된다. 수정시의 텍스트 폭 조정(TWA-M)이 이 시점에서 실행되어 레이아웃의 모든 문장의 텍스트 박스 폭을 새 텍스트로 조정한다. TWA-M이 하는 일은 장치가 새로 수정된 문장을 포함한 모든 문장에 TWA를 적용하는 것이다. 마지막으로, 수정 신호 송신 프로세스가 실행된다. 이 프로세스에서 장치는 수정 신호, 주 키 및 수정된 텍스트를 다른 사용자들에게 송신한다. 수정 신호는 문장의 소유자가 문장을 수정했음을 다른 사용자들에게 통지하는 신호이다.
도 33k의 ②의 도면은 사용자가 수정 명령을 적용하지만 취소 버튼에 손 제스처를 적용하여 동작을 취소하도록 선택하는 경우의 흐름도를 도시한다.
도 33k의 ③의 도면은 장치가 수정 신호를 수신하고 소유자가 수정한 것과 동일한 문장에 수정 명령을 적용하는 흐름도들을 도시한다. 먼저, 사용자(수신자)는 소유자로부터 수정 신호, 문장 x.a1...ak의 주 키 및 수정된 텍스트를 수신한다. 장치는 먼저 문장 x.a1...ak의 상위 문장 또는 문장 자체가 축소 상태인지 검사한다. 그러한 경우, 장치는 축소된 문장에서 모두 확장 명령을 적용한다. 그런 다음, 장치는 대응하는 문장이 삭제되는지 검사한다. 문장이 삭제되면 장치는 아무 작업도 수행하지 않고 프로세스를 종료한다. 그렇지 않으면 장치는 이전 텍스트를 새로운(수정된) 텍스트로 대체한다. 그런 다음, 장치는 새로운 문장을 갖는 레이아웃에 수정시의 텍스트 폭 조정(TWA-M)을 적용한다. 마지막으로, 수신자는 문장의 소유자가 문장을 수정했다는 통지를 받는다.
도 33l은 반전 및 복귀 명령의 핵심을 도시한다.
도 33l의 ①의 흐름도는 반전 명령의 핵심을 도시하고, 이를 반전 명령의 프로세스라고 한다. 프로세스가 실행되면 모든 리프 문장이 식별된다. 그런 다음, 장치는 이들 리프 문장의 내부 상태를 반전 상태로 설정한다. 장치는 리프 문장들만을 표시하고, 반전 가능 심벌을 복귀 가능 심벌로 변경한다. 마지막으로, 이들 리프 문장에 반전시의 텍스트 폭 조정(TWA Upon Invert, TWA-I)이 적용된다. TWA가 하는 일은 장치가 리프 문장들에만 TWA를 적용하고 그들의 텍스트 박스 폭을 결정하는 것이다.
도 33l의 ②의 흐름도는 복귀 명령의 핵심을 도시하고, 이를 복귀 명령의 프로세스라고 한다. 프로세스가 실행되면 장치는 이러한 리프 문장들의 내부 상태를 복귀 상태로 설정한다. 장치는 레이아웃을 그의 원래 뷰로 복귀시키고, 복귀 가능 심벌을 반전 가능 심벌로 변경한다. 마지막으로, 레이아웃에 복귀시의 텍스트 폭 조정(TWA Upon Revert, TWA-R)이 적용된다. TWA-R이 하는 일은 장치가 반전 전에 원래 레이아웃에 TWA를 적용하는 것이다.
이제, 레이아웃이 반전 상태에 있는 동안 문장을 수신하기 위한 흐름도를 제공한다. 여기서, 레이아웃이 이미 반전 상태에 있다고 가정한다.
도 33l의 ③의 흐름도는 레이아웃이 반전 상태에 있는 동안 수신된 문장을 처리하는 흐름도를 도시한다. 흐름도의 상부 부분(음영 박스들)은 수신된 문장들을 처리하는 부분과 같다. 내부 설정들이 행해지면 장치는 수신된 문장의 부모 문장이 복귀 상태인지 검사한다. 부모 문장이 반전 상태인 경우, 이는 새 문장이 그의 부모 문장을 대체해야 하고 부모 문장의 내부 상태가 복귀 상태로 변경되어야 함을 의미한다. 그렇지 않고, 부모 문장이 이미 복귀 상태인 경우, 이는 수신된 문장이 새로운 리프 문장임을 의미한다. 이 설정이 행해진 후, 장치는 반전 명령의 프로세스를 실행한다.
도 33m은 증가 및 감소 명령의 핵심을 도시한다.
도 33m의 ①의 도면은 증가 명령의 핵심을 나타내고, 이를 증가 명령의 프로세스라고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak의 내부 상태를 증가 상태로 변경한다. 이어서, 원래 문장보다 큰(미리 정의된) 높이 및 폭을 갖는 새로운 텍스트 박스가 생성된다. 이어서, 더 큰(미리 정의된) 폰트를 가진 원래 문장과 동일한 텍스트가 새 텍스트 박스에 할당된다. 마지막으로, 확대된 문장은 그 위의 단지 감소 심벌과 함께 장치 상에 표시된다.
도 33m의 ②의 도면은 감소 명령의 핵심을 도시하고, 이를 감소 명령의 프로세스고 한다. 프로세스가 실행되면 장치는 문장 x.a1...ak의 내부 상태를 감소 상태로 변경한다. 그런 다음, 장치는 더 이상 확대 문장을 표시하지 않는다.
지금까지, 각각의 명령의 핵심을 제시했다. 사용자가 내부화, 외부화 및 맞춤화된 설정들에서 어떻게 명령을 적용하는지를 제시한다.
도 33n은 내부화, 외부화 및 맞춤화된 명령들에 대한 흐름도를 도시한다.
도 33n의 ①의 도면은 내부화된 명령들의 흐름도를 나타낸다. 먼저, 사용자는 문장 x.a1...ak에 손 제스처(미리 정의됨)를 적용한다. 장치는 문장의 내부 설정들을 검사하고, 적용 가능한 모든 명령을 활성화다. 장치는 프롬프트 명령 표시 영역을 표시하고, 모든 활성화 명령이 해당 영역에 표시된다. 사용자는 사용자가 적용하려고 의도하는 명령 중 하나에 손 제스처를 적용한다. 마지막으로, X 명령의 프로세스가 실행된다(X는 사용자가 적용한 명령을 나타낸다).
도 33n의 ②의 도면은 외부화된 명령들의 흐름도를 나타낸다. 먼저, 장치는 각각의 문장의 내부 설정들을 검사하고, 적용 가능한 모든 명령을 활성화한다. 장치는 명령 표시 영역에 모든 활성화 명령을 표시한다. 사용자는 사용자가 적용하려고 의도하는 명령 중 하나에 손 제스처를 적용한다. 마지막으로, X 명령의 프로세스가 실행된다(X는 사용자가 적용한 명령을 나타낸다).
도 33n의 ③의 도면은 맞춤화된 명령들의 흐름도이다. 먼저, 사용자는 문장 x.a1...ak에 맞춤화된 손 제스처(미리 정의된)를 적용한다. 장치는 맞춤화된 손 제스처가 미리 정의(또는 정의)되어 있는지 검사한다. 그렇지 않은 경우, 장치는 아무 작업도 수행하지 않는다. 그러한 경우, 장치는 명령을 식별하고 내부 설정 및 해당 적용 가능성을 검사한다. 명령이 적용 가능하지 않은 경우, 장치는 아무 작업도 수행하지 않는다. 그렇지 않은 경우, 장치가 명령을 활성화다. 마지막으로, X 명령의 프로세스가 실행된다(X는 사용자가 적용한 명령을 나타낸다).
본 발명의 다양한 예시적인 실시예들이 예시의 목적을 위해 설명되었지만, 이 분야의 기술자는 첨부된 청구항들에 개시된 바와 같은 청구 발명의 범위 및 사상을 벗어나지 않고서 다양한 수정, 추가 및 대체가 가능하다는 것을 알 것이다. 따라서, 본 발명은 본 명세서에 개시된 실시예들로 한정되지 않는다. 청구 발명의 범위는 아래의 청구항들만이 아니라 그들의 등가물들에 의해 결정되어야 한다. 본 명세서 및 도면들에서 사용된 특정 용어들은 설명의 목적으로 사용되며, 본 발명에 대한 제한으로 간주되지 않아야 한다.

Claims (20)

  1. 메시지들을 조직화하고 표시하기 위한 장치로서, 상기 장치는 프로세서를 포함하며, 상기 프로세서는,
    상기 장치들 간에 교환되는 상기 메시지들을 구조화 방식으로 조직화하고 표시하기 위한 복수의 레이아웃 모드를 설정하고;
    상기 복수의 레이아웃 모드 중에서 채팅 세션을 위한 하나의 레이아웃 모드를 결정하고;
    상기 결정된 레이아웃 모드에서 상기 채팅 세션에 포함되는 메시지들을 디스플레이 상에 표시하고;
    소정의 이벤트 발생시마다 디스플레이되는 모든 메시지들의 텍스트 박스 폭을 상기 구조화 방식으로 조정하며,
    상기 이벤트는 상기 장치의 회전, 적어도 하나의 메시지의 송신 또는 수신, 메시지 표시방식에 대한 적어도 하나의 명령의 입력 중 적어도 하나를 포함하며,
    상기 프로세서는 상기 메시지 표시방식에 대한 명령 세트를 설정하고, 상기 명령 세트는 적어도 축소, 확장, 모두 축소 및 모두 확장 명령을 포함하며,
    상기 축소 명령은 상기 프로세서가 상기 축소 명령이 적용되는 문장의 하위 문장들이 표시되지 않도록 축소하는 동시에 상기 축소 명령이 적용되는 문장에 확장 가능 심벌을 표시하도록 하며,
    상기 확장 명령은 상기 프로세서가 상기 확장 명령이 적용되는 문장의 하위 문장들이 표시되도록 하는 동시에 상기 확장 명령이 적용되는 문장에 축소 가능 심벌을 표시하도록 하며,
    상기 모두 축소 명령은 상기 프로세서가 상기 모두 축소 명령이 적용되는 문장과 그 하위 문장들에 상기 축소 명령을 적용하도록 하며,
    상기 모두 확장 명령은 상기 프로세서가 상기 모두 확장 명령이 적용되는 문장과 그 하위 문장들에 상기 확장 명령을 적용하도록 하는,
    메시지 조직화 및 표시 장치.
  2. 청구항 1에 있어서,
    상기 메시지는 응답하고자 하는 목표 메시지를 구체적으로 선택함에 의해 생성되는 응답 메시지를 포함하는,
    메시지 조직화 및 표시 장치.
  3. 청구항 2에 있어서,
    상기 프로세서는 메시지 작성자에 의해 설정되는 메시지 만료 시간을 적어도 하나의 메시지에 포함시키며, 메시지 만료 시간이 설정된 메시지는 만료 시간에 상기 채팅 세션에 참여하는 모든 사용자 장치에서 삭제되는,
    메시지 조직화 및 표시 장치.
  4. 청구항 3에 있어서,
    상기 메시지 만료 시간이 설정된 메시지는 그에 대한 응답이 불가능하도록 설정가능한,
    메시지 조직화 및 표시 장치.
  5. 청구항 2에 있어서,
    상기 프로세서는 내부화 타입, 외부화 타입 및 맞춤화 타입으로 구성되는 그룹으로부터 선택되는 하나의 타입으로 상기 메시지 표시방식에 대한 명령 세트를 설정하고,
    상기 내부화 타입은 사용자의 손 제스처 입력에 따라 상기 명령 세트들이 디스플레이되는 타입이며,
    상기 외부화 타입은 각 메시지와 함께 상기 명령 세트들이 디스플레이되는 타입이며,
    상기 맞춤화 타입은 사용자의 손 제스처 입력에 따라 해당 손 제스처에 대응하는 명령이 표시없이 수행되는 타입인,
    메시지 조직화 및 표시 장치.
  6. 청구항 5에 있어서,
    상기 명령 세트는 적어도 응답, 축소, 확장, 삭제, UBD(유비쿼터스 삭제, Ubiquitous Delete), 숨기기, 표시, 수정, 반전, 복원 명령을 포함하고, 각 명령은 독립적 내부화, 외부화 또는 맞춤화 타입 중 하나로 독립적으로 설정가능한,
    메시지 조직화 및 표시 장치.
  7. 청구항 6에 있어서,
    상기 명령은 모두 축소, 모두 확장, 모두 삭제, 모두 UBD(모두 유비쿼터스 삭제, Ubiquitous Delete All), 모두 숨기기, 모두 표시, 증가, 감소를 더 포함하는,
    메시지 조직화 및 표시 장치.
  8. 삭제
  9. 청구항 1에 있어서,
    새로 수신된 문장이 속하는 레이아웃의 다른 문장들 중 일부 또는 전부가 축소 상태에 있을 경우, 상기 프로세서는 상기 레이아웃의 축소된 문장들 중 적어도 일부를 자동 확장하는,
    메시지 조직화 및 표시 장치.
  10. 청구항 9에 있어서,
    상기 프로세서는 상기 수신된 문장에 직접 관련된 상위 문장들만을 자동 확장하고 레이아웃을 상위 문장 중의 적어도 하나가 축소되기 이전의 상태로 복원하는 MPS(이전 상태 유지, Maintain the Previous State) 자동 확장 명령을 수행하는,
    메시지 조직화 및 표시 장치.
  11. 청구항 9에 있어서,
    상기 프로세서는 상기 수신된 문장에 직접 관련된 상위 문장들만을 자동 확장하고 상기 수신된 문장과 동일한 깊이를 갖는 문장들을 축소하는 CD(공통 깊이, Common Depth) 자동 확장 명령을 수행하는,
    메시지 조직화 및 표시 장치.
  12. 청구항 9에 있어서,
    상기 프로세서는 상기 수신된 문장에 직접 관련된 상위 문장들만들 자동 확장하고 레이아웃의 다른 문장들을 축소하는 OB(일 분기, One Branch) 자동 확장 명령을 수행하는,
    메시지 조직화 및 표시 장치.
  13. 청구항 9에 있어서,
    상기 프로세서는 상기 수신된 문장이 속하는 레이아웃의 모든 축소된 문장들을 확장하는 EA(모두 확장, Expand All) 자동 확장 명령을 수행하는,
    메시지 조직화 및 표시 장치.
  14. 청구항 2에 있어서,
    상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 숨기기, 표시, 모두 숨기기 및 모두 표시 명령을 포함하며,
    상기 숨기기 명령은 상기 프로세서가 상기 숨기기 명령이 적용되는 문장의 텍스트 박스 높이를 디폴트 높이로 조정하고 일부 문장 부분을 표시하지 않도록 하는 동시에 상기 숨기기 명령이 적용되는 문장에 표시 가능 심벌을 표시하도록 하며,
    상기 표시 명령은 상기 프로세서가 상기 표시 명령이 적용되는 문장의 텍스트 박스 높이를 상기 디폴트 높이에서 원래의 높이로 조정하고 모든 텍스트 부분을 표시하도록 하는 동시에 상기 표시 명령이 적용되는 문장에 숨기기 가능 심벌을 표시하도록 하며,
    상기 모두 숨기기 명령은 상기 프로세서가 상기 모두 숨기기 명령이 적용되는 문장 및 그 하위 문장들에 상기 숨기기 명령을 적용하도록 하며,
    상기 모두 표시 명령은 상기 프로세서가 상기 모두 표시 명령이 적용되는 문장 및 그 하위 문장들에 상기 표시 명령을 적용하도록 하는,
    메시지 조직화 및 표시 장치.
  15. 청구항 2에 있어서,
    상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 삭제 및 모두 삭제 명령을 포함하며,
    상기 삭제 명령은 상기 프로세서가 상기 삭제 명령이 적용되는 문장의 텍스트를 삭제하도록 하며,
    상기 삭제 명령은 상기 프로세서가 상기 삭제 명령이 적용되는 문장의 텍스트 박스를 디폴트 높이로 조정하여 표시하는 삭제 방법 1과, 상기 프로세서가 상기 삭제 명령이 적용되는 문장의 텍스트 박스를 삭제하는 삭제 방법 2 중의 하나를 실행하도록 하며,
    상기 모두 삭제 명령은 상기 삭제 명령이 적용되는 문장 및 그 하위 문장들에 상기 삭제 명령을 적용하도록 하며,
    상기 삭제 명령이 상기 삭제 방법 2를 실행하도록 한 경우, 삭제된 문장에 대한 응답 메시지를 수신한 상기 프로세서는 상기 삭제된 텍스트 박스를 다시 표시하거나 또는 상기 삭제된 텍스트 박스와 삭제된 문장을 함께 다시 표시하는,
    메시지 조직화 및 표시 장치.
  16. 청구항 2에 있어서,
    상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 UBD(유비쿼터스 삭제, Ubiquitous Delete) 및 모두 UBD(모두 유비쿼터스 삭제, Ubiquitous Delete All) 명령을 포함하며,
    상기 UBD 명령은 상기 프로세서가 상기 UBD 명령이 적용되는 문장의 텍스트를 삭제하는 동시에 상기 문장을 수신한 다른 사용자에게 해당 문장을 삭제하라는 요청 메시지를 송신하도록 하며,
    상기 모두 UBD 명령은 상기 프로세서가 상기 UBD 명령이 적용되는 문장의 하위 문장들에 상기 UBD 명령을 적용하도록 하는,
    메시지 조직화 및 표시 장치.
  17. 청구항 16에 있어서,
    상기 UBD 명령이 실행된 경우, 상기 프로세서는 상기 요청 메시지에 대한 상기 다른 사용자들의 응답을 상기 UBD 명령을 적용한 사용자에게 전달하는,
    메시지 조직화 및 표시 장치.
  18. 청구항 2에 있어서,
    상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 수정 명령을 포함하며,
    상기 수정 명령은 상기 프로세서가 상기 수정 명령이 적용되는 문장의 적어도 일부에 대한 수정을 허용하고, 상기 문장을 수신한 다른 사용자에게 해당 문장이 수정되었음을 알리는 메시지를 송신하도록 하는,
    메시지 조직화 및 표시 장치.
  19. 청구항 2에 있어서,
    상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 반전 및 복귀 명령을 포함하며,
    상기 반전 명령은 상기 반전 명령이 적용되는 레이아웃의 리프 문장만이 표시되도록 하는 동시에 상기 반전 명령이 적용되는 레이아웃에 복귀 가능 심벌을 표시하도록 하며,
    상기 복귀 명령은 상기 복귀 명령이 적용되는 레이아웃의 문장들이 원래대로 표시되도록 하는 동시에 상기 복귀 명령이 적용되는 레이아웃에 반전 가능 심벌을 표시하도록 하는,
    메시지 조직화 및 표시 장치.
  20. 청구항 2에 있어서,
    상기 프로세서는 상기 메시지 표시방식에 대한 명령을 설정하고, 상기 명령은 적어도 증가 및 감소 명령을 포함하며,
    상기 증가 명령은 상기 프로세서가 상기 증가 명령이 적용되는 문장의 폰트, 텍스트 박스 폭 및 텍스트 박스 크기를 증가하는 동시에 상기 증가 명령이 적용되는 문장에 감소 가능 심벌을 표시하도록 하며,
    상기 감소 명령은 상기 프로세서가 상기 감소 명령이 적용되는 문장의 폰트, 텍스트 박스 폭 및 텍스트 박스 크기를 감소하는 동시에 상기 감소 명령이 적용되는 문장에 증가 가능 심벌을 표시하도록 하는,
    메시지 조직화 및 표시 장치.
KR1020180074556A 2018-06-28 2018-06-28 인스턴트 메시지 조직화 및 표시 장치 및 방법 KR102052034B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180074556A KR102052034B1 (ko) 2018-06-28 2018-06-28 인스턴트 메시지 조직화 및 표시 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180074556A KR102052034B1 (ko) 2018-06-28 2018-06-28 인스턴트 메시지 조직화 및 표시 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102052034B1 true KR102052034B1 (ko) 2019-12-04

Family

ID=69004569

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180074556A KR102052034B1 (ko) 2018-06-28 2018-06-28 인스턴트 메시지 조직화 및 표시 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102052034B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072523A (ja) * 2004-08-31 2006-03-16 Canon Inc 画像表示装置及び画像表示方法
JP2009501370A (ja) * 2005-07-15 2009-01-15 シンク ソフトウェア ピーティーワイ リミテッド 自由テキスト・メッセージについて構造化データを提供する方法および装置
JP2011192286A (ja) * 2011-04-05 2011-09-29 Casio Computer Co Ltd 表示制御装置及びプログラム
KR20130100320A (ko) 2010-10-13 2013-09-10 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 메시지 표시 방법 및 메시지 표시 장치
KR20160015592A (ko) * 2014-07-31 2016-02-15 엘지전자 주식회사 이동 단말기 및 그 제어 방법
JP2016207210A (ja) * 2015-04-21 2016-12-08 株式会社カカオ インスタントメッセージサービスを利用した揮発性メッセージサービス提供方法及び端末

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072523A (ja) * 2004-08-31 2006-03-16 Canon Inc 画像表示装置及び画像表示方法
JP2009501370A (ja) * 2005-07-15 2009-01-15 シンク ソフトウェア ピーティーワイ リミテッド 自由テキスト・メッセージについて構造化データを提供する方法および装置
KR20130100320A (ko) 2010-10-13 2013-09-10 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 메시지 표시 방법 및 메시지 표시 장치
JP2011192286A (ja) * 2011-04-05 2011-09-29 Casio Computer Co Ltd 表示制御装置及びプログラム
KR20160015592A (ko) * 2014-07-31 2016-02-15 엘지전자 주식회사 이동 단말기 및 그 제어 방법
JP2016207210A (ja) * 2015-04-21 2016-12-08 株式会社カカオ インスタントメッセージサービスを利用した揮発性メッセージサービス提供方法及び端末

Similar Documents

Publication Publication Date Title
US10671249B2 (en) Device and method for organizing and displaying instant messages in various structured fashions
US20240137998A1 (en) Point-to-Point Ad Hoc Voice Communication
US9310965B2 (en) Information processing apparatus, display control method and display control program
NL2017007B1 (en) Canned answers in messages
US10366629B2 (en) Problem solver steps user interface
KR20230117542A (ko) 사용자 단말 장치 및 이의 디스플레이 방법
JP4960742B2 (ja) 画面表示項目を選択する端末機及び方法
US9983771B2 (en) Provision of an open instance of an application
JP5715714B2 (ja) タッチスクリーンディスプレイを有する多機能デバイスでの編集の方法およびグラフィカルユーザインターフェース
US20090249235A1 (en) Apparatus and method for splitting and displaying screen of touch screen
AU2013219236A1 (en) Message handling method and terminal supporting the same
WO2014052870A1 (en) Selection of characters in a string of characters
US12067325B2 (en) Screen sharing system, screen sharing method, and display apparatus
KR20240051950A (ko) 커뮤니케이션들을 개시하기 위한 방법들 및 인터페이스들
US20160299676A1 (en) Display apparatus and method for controlling the same
US9830056B1 (en) Indicating relationships between windows on a computing device
JP6919079B1 (ja) 表示装置
KR102052034B1 (ko) 인스턴트 메시지 조직화 및 표시 장치 및 방법
US20140298274A1 (en) Method and electronic device for processing data
KR102052033B1 (ko) 다양한 구조화 방식들로 인스턴트 메시지들을 조직화하고 표시하기 위한 장치 및 방법
US20240361970A1 (en) Screen sharing system, screen sharing method, and display apparatus
JP2021140620A (ja) 情報通信システム及び情報通信プログラム
KR20130104373A (ko) 타일붙이기 형식의 문자입력 방식-손글씨 워드프로세서
KR20130026953A (ko) 타일붙이기 형식의 문자입력 방식-손글씨 워드프로세서

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant