KR20140069007A - 그리드 상에서 프레젠테이션 타일의 동적 레이아웃을 위한 기법 - Google Patents

그리드 상에서 프레젠테이션 타일의 동적 레이아웃을 위한 기법 Download PDF

Info

Publication number
KR20140069007A
KR20140069007A KR1020147007521A KR20147007521A KR20140069007A KR 20140069007 A KR20140069007 A KR 20140069007A KR 1020147007521 A KR1020147007521 A KR 1020147007521A KR 20147007521 A KR20147007521 A KR 20147007521A KR 20140069007 A KR20140069007 A KR 20140069007A
Authority
KR
South Korea
Prior art keywords
tile
presentation
montage
tiles
presentation tile
Prior art date
Application number
KR1020147007521A
Other languages
English (en)
Other versions
KR101985558B1 (ko
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
Priority claimed from US13/242,009 external-priority patent/US9679404B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140069007A publication Critical patent/KR20140069007A/ko
Application granted granted Critical
Publication of KR101985558B1 publication Critical patent/KR101985558B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • 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

Landscapes

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

Abstract

전자 몽타주 시스템을 위한 기법이 설명된다. 장치는 프레젠테이션 컴포넌트를 포함하는 몽타주 애플리케이션을 실행하도록 배치된 논리 장치를 포함할 수 있다. 프레젠테이션 컴포넌트는 디스플레이 크기나 해상도가 몽타주의 원본 레이아웃에서 사용된 값과는 달라졌을 때를 탐지하는 동작을 할 수 있다. 프레젠테이션 컴포넌트는 서로에 대한 타일들의 공간 특성을 보존하도록, 변경된 디스플레이에서 몽타주의 타일들을 재배치하거나, 또는 리플로우할 수 있다. 작성 컴포넌트는 타일들 간의 빈 공간을 최소화시키기 위해 타일이 몽타주에서 삭제될 때 자동으로 타일을 리플로우할 수 있다. 다른 실시예들이 설명되고 청구된다.

Description

그리드 상에서 프레젠테이션 타일의 동적 레이아웃을 위한 기법{TECHNIQUES FOR DYNAMIC LAYOUT OF PRESENTATION TILES ON A GRID}
몽타주는 단일 합성 요소를 형성하기 위해 개별 요소들의 집합을 포함할 수 있다. 예를 들어, 몽타주는 여러 개의 개별 사진들로 이루어진 합성 사진이나, 또는 상이한 이미지들의 고속 시퀀스를 포함하는 비디오 시퀀스를 포함할 수 있다. 전자 몽타주 시스템들은 상이한 웹 애플리케이션들로부터 제공되는 상이한 구성 웹 페이지들(constituent web pages)을 포함하는 합성 웹 페이지와 같이, 디지털 컨텐츠를 사용하여 디지털 몽타주들을 생성하도록 설계되었다. 때때로, 검색 엔진에서 사용되는 특정 검색 용어와 관련된 웹 페이지들이나, 또는 브라우저 히스토리에 저장된 사용자가 꾸준히 방문한 웹 페이지들과 같은 구성 웹 페이지들이 중심 테마에 따라 체계화된다. 종종, 구성 웹 페이지들은 합성 웹 페이지의 공간 제약으로 인한 실제 웹 페이지의 더 낮은 충실도의 표현들(lower-fidelity representations)이다. 따라서, 사용자는 더 면밀한 관찰을 위해 선택된 웹페이지의 더 높은 충실도 버전을 검색하기 위해 구성 웹페이지를 선택할 수 있다. 그러나, 디지털 정보의 양이 증가함에 따라, 사용자에게 의미 있는 정보를 제공하는 방식으로 디지털 몽타주를 생성하는 것이 점점 더 어려워지고 있다.
또한, 어느 하나의 크기 또는 디스플레이 해상도로 설계된 몽타주가 다른 크기 또는 해상도 디스플레이에서 볼 경우 적절하게 디스플레이되지 않을 수 있다. 타일의 일부가 원래의 배치로는 이용 가능한 공간에 맞지 않을 수 있다. 공간에 맞게 하기 위한 타일 셔플링(shuffling)은 그 위치 관계를 망칠 수 있다. 타일의 크기 조절(resizing)은 몽타주를 특히 작은 디스플레이 영역에서 보거나 인터랙션하기 어렵게 할 수 있다. 본 개량들이 필요했던 것은 이들 및 다른 이유들과 관련된다.
본 요약은 아래의 상세한 설명에서 추가적으로 설명되는 일련의 개념을 간략화된 형태로 소개하기 위한 것이다. 본 요약은 특허청구된 대상의 핵심적인 특징 또는 필수적인 특징을 밝히기 위한 것이 아니며, 특허청구된 대상의 범위를 결정하는 데 일조하기 위해 사용되는 것도 아니다.
다양한 실시예들은 일반적으로 전자 몽타주 시스템들과 관련된다. 일부 실시예들은 특히 이종(heterogeneous) 데이터 소스들로부터 디지털 몽타주를 생성하도록 배치된 전자 몽타주 시스템에 관한 것이다. 전자 몽타주 시스템은 사용자로 하여금 데이터 소스에 대한 맞춤화된 표현들을 갖는 맞춤화된 디지털 몽타주를 생성하게 할 수 있으며, 따라서 다른 사용자들로 하여금 더 세밀한 관찰을 위해 관심 있는 데이터 소스를 빨리 식별하고 선택하게 할 수 있다. 전자 몽타주 시스템은 맞춤화된 디지털 몽타주를 발행(publishing) 모델, 메시징 모델 또는 발행 모델과 메시징 모델의 조합을 통해 다른 사용자들에게 발행할 수 있다.
일 실시예에서, 예를 들어, 장치는 몽타주 애플리케이션을 실행하도록 배치된 논리 장치를 포함할 수 있다. 논리 장치는, 예를 들어, 프로세서와 메모리를 갖는 처리 시스템을 포함할 수 있다. 몽타주 애플리케이션은 다수의 프레젠테이션 타일을 갖는 프레젠테이션 표면을 제공하고, 컨텐츠 파일들을 프레젠테이션 타일들과 연계시키는 제어 명령어들(directives)을 수신하고, 컨텐츠 파일들에 대한 컨텐츠 파일 타입들에 기반하여 컨텐츠 파일들에 대한 타일 객체들을 생성하며, 프레젠테이션 표면과 타일 객체들을 몽타주로 저장하도록 동작하는 작성(authoring) 컴포넌트를 포함할 수 있다. 몽타주 애플리케이션은 프레젠테이션 표면의 각각의 관련된 프레젠테이션 타일 내에 각각의 타일 객체를 제공하기 위한 제 1 사용자 인터페이스 뷰를 생성하고, 타일 객체의 선택을 위한 제어 명령어를 수신하며, 타일 객체에 대응하는 컨텐츠 파일을 제공하기 위한 제 2 사용자 인터페이스 뷰를 생성하도록 동작하는 프레젠테이션 컴포넌트를 더 포함할 수 있다.
몽타주 애플리케이션은 디스플레이 크기나 해상도가 몽타주의 원본 레이아웃(original layout)과 다를 때를 탐지하는 프레젠테이션 컴포넌트를 포함할 수 있다. 디스플레이 크기나 해상도가 바뀔 때, 프레젠테이션 표면은 차원(dimension)을 바꿀 수 있다. 프레젠테이션 컴포넌트는 서로에 대한 타일들의 공간 특성을 보존하도록, 변경된 프레젠테이션 표면 상에서 타일들을 재분배할 수 있다. 다른 실시예들이 설명되고 청구된다.
이들 및 다른 특징들 및 이점들은 아래의 상세한 설명을 읽고 관련 도면들을 검토함으로써 명백해질 것이다. 상기의 일반적인 설명 및 아래의 상세한 설명은 모두 예시적일 뿐 청구되는 바와 같은 양태들을 제한하지 않음을 이해해야 한다.
도 1은 몽타주 시스템의 일 실시예를 도시한다.
도 2는 작성 컴포넌트의 일 실시예를 도시한다.
도 3a는 프레젠테이션 표면의 일 실시예를 도시한다.
도 3b는 타일 객체들을 갖는 프레젠테이션 표면의 일 실시예를 도시한다.
도 4는 작성 컴포넌트에 대한 일례를 도시한다.
도 5는 메시징 시스템의 일 실시예를 도시한다.
도 6은 메시징 시스템에 대한 메시지 흐름의 일 실시예를 도시한다.
도 7a는 메시지의 사용자 인터페이스 뷰의 일 실시예를 도시한다.
도 7b는 몽타주의 사용자 인터페이스 뷰의 일 실시예를 도시한다.
도 7c는 타일 객체의 사용자 인터페이스 뷰의 일 실시예를 도시한다.
도 7d는 컨텐츠 파일의 사용자 인터페이스 뷰의 일 실시예를 도시한다.
도 8은 작성 컴포넌트에 대한 논리 흐름의 일 실시예를 도시한다.
도 9는 발행 컴포넌트에 대한 논리 흐름의 일 실시예를 도시한다.
도 10은 몽타주 애플리케이션의 일 실시예를 도시한다.
도 11은 원본 몽타주를 갖는 프레젠테이션 표면의 일례를 도시한다.
도 12는 원본 몽타주를 갖는 다른 프레젠테이션 표면의 일례를 도시한다.
도 13은 원본 몽타주가 리플로우된(reflowed) 후의 다른 프레젠테이션 표면의 일례를 도시한다.
도 14a는 리플로우된 몽타주의 밸런싱(balancing) 이전의 다른 프레젠테이션 표면의 일례를 도시한다.
도 14b는 리플로우된 몽타주가 밸런싱된 이후의 다른 프레젠테이션 표면의 일례를 도시한다.
도 15는 몽타주의 리플로우를 위한 논리 흐름의 일 실시예를 도시한다.
도 16은 몽타주의 리플로우에서 타일 배치를 결정하기 위한 논리 흐름의 일 실시예를 도시한다.
도 17은 몽타주의 밸런싱을 위한 논리 흐름의 일 실시예를 도시한다.
도 18a는 타일이 삭제된 원본 몽타주의 일례를 도시한다.
도 18b는 타일 제거 후에 리플로우된 원본 몽타주의 일례를 도시한다.
도 19는 타일이 제거된 후의 몽타주 리플로우를 위한 논리 흐름의 일 실시예를 도시한다.
도 20은 컴퓨팅 아키텍처의 일 실시예를 도시한다.
다양한 실시예들은 일반적으로 이종 데이터 소스들로부터 디지털 몽타주를 생성하도록 구성된 전자 몽타주 시스템들에 관한 것이다. 전자 몽타주 시스템은 사용자로 하여금, 예를 들어, 애플리케이션 프로그램들과 같은 상이한 소프트웨어 프로그램들에 의해 생성된 컨텐츠 파일들을 사용하여 고도로 맞춤화된 디지털 몽타주를 생성하게 할 수 있다. 디지털 몽타주는 기초 컨텐츠 파일에 대한 맞춤화된 표현을 포함하는 하나 이상의 타일 객체를 포함할 수 있다. 타일 객체는 컨텐츠 파일로부터 선택적으로 추출되며 컨텐츠 파일에 대해 구체적으로 생성된 타입 정의에 따라 포맷팅된 정보를 사용하여 구성될 수 있다. 타입 정의는 컨텐츠 파일에 대한 상세 정보, 예를 들어, 파일 확장자, 데이터 스키마, 포맷팅 제어, 삽입된 객체, 삽입된 코드, 프로퍼티, 스크립트 및 기타 파일 특정 정보를 포함한다. 타입 정의는 컨텐츠 파일로부터 추출할 정보의 타입들, 추출된 정보의 포맷팅, 생성할 다수의 타일 객체 버전 등과 관련된 규칙들의 세트도 포함한다. 이러한 방식으로, 더 넓은 범위의 컨텐츠 파일들을 사용하여 디지털 몽타주를 작성하는 한편, 보는 사람에게 의미 있는 정보를 제공하는 매우 전형적인 타일 객체들을 구성할 수 있다. 이러한 접근법은 보는 사람들로 하여금 몽타주 내의 타일 객체들을 쉽게 판독하고, 많은 타일 객체 중에서 관심 있는 컨텐츠 파일을 식별하며, 더 세밀한 관찰을 위해 컨텐츠 파일을 빠르게 검색하기 위한 타일 객체를 선택하는 것을 가능하게 한다.
몇몇 실시예는 디스플레이 크기 또는 해상도가 몽타주의 원본 레이아웃에서 사용된 값과는 달라졌을 때를 탐지하는 프레젠테이션 컴포넌트를 구비한 전자 몽타주 시스템에 관한 것이다. 프레젠테이션 컴포넌트는 서로에 대한 타일들의 공간 특성을 보존하도록, 변경된 디스플레이에서 몽타주의 타일들을 재배치(reposition) 또는 “리플로우”를 할 수 있다. 실시예에서는 타일들 간의 빈 공간을 최소화시키기 위해 타일이 몽타주에 추가되거나 몽타주에서 삭제될 때 자동으로 타일을 리플로우할 수 있다. 결과적으로, 실시예들은 오퍼레이터, 장치 또는 네트워크에 대한 입수 가능성(affordability), 확대 가능성(scalability), 모듈화 가능성(modularity), 확장 가능성(extendibility) 또는 연동 가능성(interoperability)을 향상시킬 수 있다.
도 1은 몽타주 애플리케이션(140)을 갖는 몽타주 시스템(100)의 블록도를 나타낸다. 일 실시예에서, 예를 들어, 몽타주 시스템(100) 및 몽타주 애플리케이션(140)은, 예를 들어, 컴포넌트들(110, 130)과 같은 다양한 컴포넌트들을 포함할 수 있다. 본원에서 사용될 때 용어 "시스템", "애플리케이션" 및 "컴포넌트"는 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 포함하는 컴퓨터 관련 엔티티를 지칭하기 위한 것이다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 하드 디스크 드라이브, (광학 및/또는 자기 저장 매체의) 다수의 저장 드라이브, 객체, 실행 파일, 실행 스레드(thread), 프로그램 및/또는 컴퓨터로써 구현될 수 있다. 예를 들어, 서버 상에서 실행되는 애플리케이션 및 서버는 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 내에 존재할 수 있으며, 하나의 컴포넌트가 주어진 구현에서의 필요에 따라 하나의 컴퓨터에서 국지화될 수 있고 및/또는 둘 이상의 컴퓨터 사이에 분산될 수 있다. 실시예들은 이에 제한되지 않는다.
도 1에 도시된 실시예에서, 몽타주 시스템(100) 및 몽타주 애플리케이션(140)은 전자 장치에 의해 구현될 수 있다. 전자 장치의 예는 이동 장치, 개인 휴대 단말기, 이동 컴퓨팅 장치, 스마트 폰, 셀룰러 전화, 핸드세트, 단방향 페이저, 양방향 페이저, 메시징 장치, 컴퓨터, 개인용 컴퓨터(PC), 데스크탑 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터, 서버, 서버 어레이 또는 서버 팜(farm), 웹 서버, 네트워크 서버, 인터넷 서버, 워크스테이션, 미니 컴퓨터, 메인프레임 컴퓨터, 수퍼 컴퓨터, 네트워크 기기, 웹 기기, 분산 컴퓨팅 시스템, 멀티프로세서 시스템, 프로세서 기반 시스템, 게임 장치, 소비자 전자 장치, 프로그래밍 가능한 소비자 전자 장치, 텔레비전, 디지털 텔레비전, 셋톱 박스, 무선 액세스 포인트, 기지국, 가입자국, 이동 가입자 센터, 무선 네트워크 제어기, 라우터, 허브, 게이트웨이, 브리지, 스위치, 기계, 또는 이들의 조합을 포함할 수 있지만, 이에 제한되지 않는다. 도 1에 도시된 바와 같은 몽타주 애플리케이션(140)은 특정 토폴로지 내에 제한된 수의 요소를 갖지만, 몽타주 애플리케이션(140)은 주어진 구현에 필요한 대로 대안 토폴로지들 내에 더 많거나 적은 요소를 포함할 수 있음을 알 것이다.
컴포넌트들(110, 130)은 다양한 타입의 통신 매체들을 통해 통신 가능하게 결합될 수 있다. 컴포넌트들(110, 130)은 서로 간의 동작들을 조정할 수 있다. 조정은 일방향 또는 양방향 정보 교환을 포함할 수 있다. 예를 들어, 컴포넌트들(110, 130)은 통신 매체들을 통해 통신되는 신호들의 형태로 정보를 전달할 수 있다. 정보는 다양한 신호선들에 할당되는 신호들로 구현될 수 있다. 이런 할당들에서, 각각의 메시지는 신호이다. 그러나, 추가적인 실시예들은 대안으로 데이터 메시지들을 사용할 수 있다. 이런 데이터 메시지들은 다양한 접속들을 통해 전송될 수 있다. 예시적인 접속은 병렬 인터페이스, 직렬 인터페이스 및 버스 인터페이스를 포함한다.
도 1에 도시된 실시예에서, 몽타주 시스템은 하나 이상의 컨텐츠 파일(104-c) 및 몽타주 애플리케이션(140)을 포함할 수 있다. 컨텐츠 파일들(104-c)은 애플리케이션 프로그램, 웹 애플리케이션, 웹 서비스 등과 같은 소프트웨어 프로그램에 의해 생성되는 디지털 컨텐츠를 포함할 수 있다. 몽타주 애플리케이션(140)은 하나 이상의 선택된 컨텐츠 파일(104-c)을 사용하여 몽타주(120)를 생성할 수 있다. 일 실시예에서, 하나 이상의 컨텐츠 파일(104-c)은 사용자에 의해 수동으로 선택될 수 있다. 일 실시예에서, 하나 이상의 컨텐츠 파일(104-c)은 소프트웨어 프로그램에 의해, 예를 들어, 검색 엔진에서 사용되는 특정 검색 용어와 관련된 검색 결과들 또는 브라우저 히스토리에 저장된 바와 같이 사용자가 꾸준히 방문한 컨텐츠 파일들(104-c)을 사용하여 자동으로 선택될 수 있다.
몽타주 애플리케이션(140)은 많은 요소 중에 특히 작성 컴포넌트(110) 및 프레젠테이션 컴포넌트(130)를 포함할 수 있다. 사용자는 작성 컴포넌트(110)를 사용하여 몽타주(120)를 작성하거나 생성할 수 있다. 몽타주(120)를 작성하거나 생성하는 사용자는 본원에서 때때로 "컨텐츠 생성자(content producer)"로서 지칭될 수 있다. 사용자는 프레젠테이션 컴포넌트(130)를 사용하여 몽타주(120)를 보거나 탐색할 수 있다. 몽타주(120)를 보거나 탐색하는 사용자는 본원에서 때때로 "컨텐츠 소비자(content consumer)"로 지칭될 수 있다. 몽타주 애플리케이션(140)은 도 2-11을 참조하여 보다 상세히 설명되는 바와 같은 다른 컴포넌트들을 더 포함한다.
작성 컴포넌트(110)는 일반적으로 컨텐츠 생성자가 몽타주(120)를 생성, 제작 또는 작성하는 것을 가능하게 하기 위한 사용자 인터페이스 뷰들 및 도구들을 생성하는 것을 포함하는, 몽타주 애플리케이션(140)의 작성 동작들을 관리할 수 있다. 몽타주(120)는 단일 합성 디지털 정보 요소를 형성하기 위해, 선택된 컨텐츠 파일들(104-c)로부터의 디지털 정보 요소들의 단일 합성물 또는 집합을 포함할 수 있다. 몽타주(120)는, 예를 들어, 애플리케이션 프로그램들에 대한 애플리케이션 파일들과 같이 이종 애플리케이션들에 의해 생성된 상이한 구성 디지털 정보 요소들을 갖는 합성 문서를 포함할 수 있다. 때때로, 구성 디지털 정보 요소들은 비즈니스 프로젝트, 개인적 휴가 또는 휴일과 관련된 디지털 정보 요소들과 같이 중심 테마에 따라 체계화된다. 종종, 구성 디지털 정보 요소들은 합성 문서의 공간 제약으로 인한 실제 컨텐츠 파일들(104-c)의 더 낮은 충실도의 표현들이다. 따라서, 컨텐츠 소비자는 구성 디지털 정보 요소를 선택하여, 보다 면밀한 관찰을 위해 관련 컨텐츠 파일(104-c)의 더 높은 충실도의 버전을 검색할 수 있다.
일 실시예에서, 예를 들어, 작성 컴포넌트(110)는 몽타주(120)에 대한 프레젠테이션 표면(122)을 제공하도록 배열될 수 있다. 프레젠테이션 표면(122)은 프레젠테이션 표면(122) 상에 특정 토폴로지로 정의 또는 배치되는 다수의 프레젠테이션 타일(124-a)을 구비할 수 있다. 작성 컴포넌트(110)는 특정 컨텐츠 파일들(104-c)을 특정 프레젠테이션 타일들(124-a)과 연계시키는 제어 명령어들(102-b)을 수신할 수 있다. 작성 컴포넌트(110)는 컨텐츠 파일들(104-c)과 관련된 다양한 컨텐츠 파일 타입들 및 타입 정의들에 기반하여 컨텐츠 파일들(104-c)에 대한 객체들(126-e)을 생성할 수 있다. 작성 컴포넌트(110)는 프레젠테이션 표면(122) 및 타일 객체들(126-e)을 몽타주(120)의 일부로서 저장할 수 있으며, 이어서 이들은 다양한 컨텐츠 소비자들에게 발행 또는 배포될 수 있다.
본원에서 사용되는 바와 같은 "a", "b", "c" 및 유사한 지시어들은 임의의 양의 정수(positive integer)를 나타내는 변수들인 것을 의도한다는 점에 주목할 가치가 있다. 따라서, 예를 들어, 구현이 값을 a = 5로 설정하는 경우, 프레젠테이션 타일들(124-a)의 완전 세트는 프레젠테이션 타일들(124-1, 124-2, 124-3, 124-4, 및 124-5)을 포함할 수 있다. 실시예들은 이에 제한되지 않는다.
작성 컴포넌트(110)는 다수의 프레젠테이션 타일(124-a)을 갖는 프레젠테이션 표면(122)을 제공함으로써 몽타주(120)를 생성하기 위한 작성 동작들을 개시할 수 있다. 프레젠테이션 표면(122)은 좌표계 및 경계들을 갖는 임의의 정의된 크기의 이차원(2D) 또는 삼차원(3D) 토폴로지 공간을 포함할 수 있다. 프레젠테이션 표면(122)에 대한 예는 워드 프로세싱 프로그램에서의 문서, 프레젠테이션 프로그램에서의 슬라이드, 스프레드시트 프로그램에서의 워크시트, 노트 프로그램에서의 노트, 개인 정보 관리자(PIM)에서의 접촉식 카드, 및 애플리케이션 프로그램들에 의해 통상적으로 사용되는 다른 공간들을 포함할 수 있다.
프레젠테이션 타일(124-a)은 타일 객체(126-e)와 같은 개별 정보 세트를 제공하도록 지정된 프레젠테이션 표면(122)의 정의된 영역을 포함할 수 있다. 정의된 영역은 주어진 구현에 필요한 대로의 임의의 크기, 치수 또는 형상을 가질 수 있다. 주어진 프레젠테이션 표면(122)은 임의 수의 프레젠테이션 타일(124-a)을 가질 수 있으며, 각각의 프레젠테이션 타일(124-a)은 모든 프레젠테이션 타일들(124-a)이 프레젠테이션 표면(122)에서 주어진 크기 내에 맞는 것을 보장하기 위한 정의들(예를 들어, 크기, 형상, 치수, 기하 구조)의 세트를 가질 수 있다. 프레젠테이션 타일들(124-a)에 대한 정의들은 프레젠테이션 표면(122), 컨텐츠 파일들(104-c)의 세트, 컨텐츠 파일들(104-c)과 프레젠테이션 타일(124-a) 간의 연관성들, 컨텐츠 파일들(104-c)과 관련된 타일 객체들(126-e), 디스플레이의 특성들, 장치의 특성들, 사용자 선호들 및 기타 팩터들에 기반하여 동적으로 변경될 수 있다. 실시예들은 이에 제한되지 않는다.
일 실시예에서, 컨텐츠 생성자는 프레젠테이션 표면(122) 및 프레젠테이션 타일들(124-a)을 맞춤 정의할 수 있다. 몽타주 애플리케이션(140)에 대한 사용자 인터페이스는 프레젠테이션 표면(122) 및 프레젠테이션 표면(122) 상의 프레젠테이션 타일들(124-a)의 세트의 특성들을 변경하도록 구체적으로 정의된 다양한 제어들을 제공할 수 있다. 이런 제어들의 예는 그림(drawing) 제어, 치수 제어, 크기 제어, 폭 제어, 높이 제어, 픽셀 제어, 리프레시 제어 등을 포함할 수 있지만, 이에 제한되지 않는다. 대안으로, 컨텐츠 생성자는 상이한 프레젠테이션 표면들 및 프레젠테이션 타일들(124-a)을 제공하는 임의 수의 몽타주 템플릿들로부터 선택할 수 있다.
작성 컴포넌트(110)는 특정 컨텐츠 파일들(104-c)을 특정 프레젠테이션 타일들(124-a)과 연계시키는 제어 명령어들(102-b)을 수신할 수 있다. 작성 컴포넌트(110)는 사용자로 하여금 컨텐츠 파일(104-a)을 선택하고 컨텐츠 파일(104-a)을 프레젠테이션 타일(124-a)과 연계시키는 것을 가능하게 하는 사용자 인터페이스 뷰 및 도구들을 생성할 수 있다. 예를 들어, 사용자는 포인팅 장치와 같은 입력 장치를 사용하여, 컨텐츠 파일(104-1)을 선택하고, 컨텐츠 파일(104-1)을 프레젠테이션 타일(124-1) 위로 드래그할 수 있다. 사용자 선택은 작성 컴포넌트(110)에 선택을 알리는 메시지나 신호로 제어 명령어(102-b)를 생성할 수 있다. 대안으로, 제어 명령어들(102)은 컨텐츠 선택 알고리즘에 따라 프로그램 방식으로 생성될 수 있다. 예를 들어, 컨텐츠 선택 알고리즘은 검색 엔진에 의해 생성된 검색의 결과들로부터, 또는 사용자 브라우징 패턴들의 분석에 의해 컨텐츠 파일들(104-c)을 자동으로 선택하기 위해, 정의된 규칙들의 세트를 가질 수 있다. 실시예들은 이에 제한되지 않는다.
컨텐츠 파일(104-c)은 애플리케이션 프로그램, 웹 애플리케이션, 웹 서비스, 클라이언트 애플리케이션, 서버 애플리케이션, 시스템 프로그램 등과 같은 소프트웨어 프로그램에 의해 생성된 임의의 디지털 정보 요소 또는 디지털 컨텐츠를 포함할 수 있다. 상이한 소프트웨어 프로그램들은 상이한 타입의 디지털 컨텐츠를 생성할 수 있다. 따라서, 상이한 소프트웨어 프로그램들에 의해 생성되는 디지털 컨텐츠는 이종 디지털 컨텐츠를 포함할 수 있다. 컨텐츠 파일(104-c)의 예는 워드 프로세싱 파일, 스프레드시트 파일, 프레젠테이션 파일, 개인 정보 관리자(PIM) 파일, 데이터베이스 파일, 발행자 파일, 그림 파일, 노트 파일, 메시지 파일, 프로젝트 파일 등과 같은 애플리케이션 파일들을 포함할 수 있지만, 이에 제한되지 않는다. 컨텐츠 파일(104-c)의 추가적인 예로 오디오 파일, 이미지 파일, 비디오 파일, 오디오/비디오(AV) 파일, 애니메이션 파일, 게임 파일, 마크업 파일, 웹페이지 파일, 소셜 네트워킹 서비스(SNS) 파일 등과 같은 멀티미디어 파일들을 포함할 수 있다. 이들은 컨텐츠 파일(104-c)의 몇 가지 예에 불과하며, 실시예들은 이들 예로 제한되지 않음을 알 수 있다.
일 실시예에서, 컨텐츠 파일(104-c)은 워싱턴 주 레드몬드의 마이크로소프트사에 의해 제작된 MICROSOFT WINDOWS®에 대한 MICROSOFT® OFFICE 제품군과 같이, 특정 운영 체제를 위해 설계된 상호 관련된 클라이언트 애플리케이션들, 서버 애플리케이션들 및 웹 서비스들의 제품군에 대한 컨텐츠 파일을 포함할 수 있다. 클라이언트 애플리케이션들의 예는 MICROSOFT WORD, MICROSOFT EXCEL®, MICROSOFT POWERPOINT®, MICROSOFT OUTLOOK®, MICROSOFT ACCESS®, MICROSOFT INFOPATH®, MICROSOFT ONENOTE®, MICROSOFT PROJECT, MICROSOFT PUBLISHER, MICROSOFT SHAREPOINT® WORKSPACE, MICROSOFT VISIO®, MICROSOFT OFFICE INTERCONNECT, MICROSOFT OFFICE PICTURE MANAGER, MICROSOFT SHAREPOINT DESIGNER, 및 MICROSOFT LYNC를 포함할 수 있지만 이에 제한되지 않는다. 서버 애플리케이션들의 예는 MICROSOFT SHAREPOINT SERVER, MICROSOFT LYNC SERVER, MICROSOFT OFFICE FORMS SERVER, MICROSOFT OFFICE GROOVE® SERVER, MICROSOFT OFFICE PROJECT SERVER, MICROSOFT OFFICE PROJECT PORTFOLIO SERVER, 및 MICROSOFT OFFICE PERFORMANCEPOINT® SERVER를 포함할 수 있지만 이에 제한되지 않는다. 웹 서비스들에 대한 예는 MICROSOFT WINDOWS LIVE®, MICROSOFT OFFICE WEB APPLICATIONS, MICROSOFT OFFICE LIVE, MICROSOFT LIVE MEETING, MICROSOFT OFFICE PRODUCT WEB SITE, MICROSOFT UPDATE SERVER, 및 MICROSOFT OFFICE 365를 포함할 수 있지만 이에 제한되지 않는다. 실시예들은 이러한 예시들로 제한되지 않는다.
일 실시예에서, 컨텐츠 파일(104-c)은 몽타주(120)를 생성하기 위해 몽타주 애플리케이션(140)의 동일한 컨텐츠 생성자에 의해 개인적으로 작성된 컨텐츠 파일을 포함할 수 있다. 예를 들어, 컨텐츠 생성자가 비즈니스 프로젝트의 프로젝트 관리자이고, 비즈니스 프로젝트의 코스 중에 워드 프로세싱 파일, 스프레드시트 파일 및 프레젠테이션 파일과 같은, 비즈니스 프로젝트와 관련된 다양한 애플리케이션 파일들을 작성한 것으로 가정한다. 컨텐츠 생성자는 몽타주 애플리케이션(140)의 작성 컴포넌트(110)를 사용하여, 컨텐츠 생성자에 의해 개인적으로 작성된 각각의 파일에 대한 타일 객체들(126-e)을 갖는 실행 보고서를 생성할 수 있다.
작성 컴포넌트(110)는 컨텐츠 파일들(104-c)의 다양한 컨텐츠 파일 타입들에 기반하여 선택된 컨텐츠 파일들(104-c)에 대한 타일 객체들(126-e)을 생성할 수 있다. 컨텐츠 파일(104-c)이 프레젠테이션 타일(124-a)과 연관되면, 작성 컴포넌트(110)는 선택된 컨텐츠 파일(104-c)에 대한 타일 객체(126-e)를 생성할 수 있다. 일 실시예에서, 단일 컨텐츠 파일(104-c)이 단일 프레젠테이션 타일(124-a)과 연관될 수 있어, 일-대-일 대응 관계가 형성될 수 있다. 일 실시예에서, 다수의 컨텐츠 파일(104-c)이 단일 프레젠테이션 타일(124-a)과 연관될 수 있고, 따라서 일-대-다 대응 관계가 형성될 수 있다.
타일 객체(126-e)는 컨텐츠 파일(104-c)에 대한 표현, 에이전트 또는 "티저(teaser)"를 포함할 수 있다. 타일 객체(126-e)는 컨텐츠 소비자로 하여금 관련 컨텐츠 파일(104-c)이 흥미로운지를 빠르고 쉽게 결정할 수 있게 해주고 관련 컨텐츠 파일(104-c)의 더 면밀한 검사를 가능하게 하는 방식으로 렌더링되는 관련 컨텐츠 파일(104-c)로부터의 간결한 정보 세트이다.
타일 객체(126-e)는 컨텐츠 파일(104-c)로부터 검색된 컨텐츠 부분(106-d)을 사용하여 생성될 수 있다. 컨텐츠 부분(106-d)은 컨텐츠 파일(104-c)에 의해 저장된 정보의 완전 세트로부터 얻어지거나 추출된 정보의 서브세트를 포함할 수 있다. 몽타주(120)의 한 가지 이점은 상이한 컨텐츠 파일들(104-c)로부터의 정보가 단일 프레젠테이션 표면(122) 상에 제공될 수 있다는 점이다. 그러나, 각각의 컨텐츠 파일(104-c)은 단일 프레젠테이션 타일(124-a)의 정의된 영역 내에 제공될 수 있는 것보다 많은 양의 정보를 포함할 수 있다. 예를 들어, 컨텐츠 파일(104-1)이 워드 프로세싱 문서를 포함하는 경우, 작성 컴포넌트(110)는 워드 프로세싱 문서 내에 포함된 모든 정보(예를 들어, 텍스트, 도표, 이미지, 그림, 삽입 객체)를 이들이 섬네일(thumbnail)로써 축소되는 경우에도 프레젠테이션 타일(124-1)의 가용 영역 또는 공간 내에 끼워 넣지 못할 수 있다. 따라서, 작성 컴포넌트(110)는 컨텐츠 소스(104-1) 내에 포함된 정보의 세트로부터 정보의 서브세트를 검색하고, 프레젠테이션 타일(124-1)에 대한 경계들의 세트 내에 맞춰지도록 정보의 서브세트를 포맷팅하고, 포맷팅된 정보의 서브세트를 타일 객체(126-1)로 저장할 수 있다. 예를 들어, 타일 객체(126-1)는 워드 프로세싱 문서에 대한 제목, 워드 프로세싱 문서의 컨텐츠 생성자(예를 들어, 작성자), 및 워드 프로세싱 문서로부터의 이미지의 조합을 포함할 수 있다.
또한 타일 객체(126-e)는 대응하는 컨텐츠 파일(104-c)에 대한 참조(예를 들어, 어드레스, 포인터 또는 링크)를 포함하거나 그와 연관될 수 있다. 타일 객체(126-e)가 더 면밀한 검사를 위해 사용자에 의해 선택될 때, 참조를 사용하여 대응하는 컨텐츠 파일(104-c)을 검색함으로써 컨텐츠 파일(104-c)의 최고 충실도 프레젠테이션을 제공할 수 있다. 일 실시예에서, 참조는 로컬 데이터 저장소에 저장된 바와 같은 컨텐츠 파일(104-c)에 대한 것일 수 있다. 이 경우, 참조는 피어(peer)-대-피어 기술을 사용하여 컨텐츠 파일(104-c)을 검색하는 데 사용될 수 있다. 일 실시예에서, 참조는 원격 데이터 저장소에 저장된 컨텐츠 파일(104-c)에 대한 것일 수 있다. 이 경우, 참조는 네트워크 저장 및 액세스 기술을 사용하여 컨텐츠 파일(104-c)을 검색하는 데 사용될 수 있다.
일 실시예에서, 단일 컨텐츠 파일(104-c)이 단일 프레젠테이션 타일(124-a)과 연관될 수 있다. 이 경우, 단일 타일 객체(126-e)가 각각의 프레젠테이션 타일(124-a) 내에 제공된다. 일 실시예에서, 다수의 컨텐츠 파일(104-c)이 단일 프레젠테이션 타일(124-a)과 연관될 수 있다. 이 경우, 다수의 타일 객체(126-e)가 단일 프레젠테이션 타일(124-a) 내에 제공될 수 있다. 렌더링할 때, 컨텐츠 소비자는 프레젠테이션 컴포넌트(130)에 의해 제공되는 선택기 도구(selector tool)를 사용하여, 상이한 프레젠테이션 타일들(124-a) 내에 제공된 다수의 타일 객체(126-e) 사이에서, 그리고 단일 프레젠테이션 타일(124-a) 내에 제공된 다수의 타일 객체(126-e) 사이에서 탐색할 수 있으므로, 컨텐츠 소비자는 관심 있는 타일 객체(126-e)를 선택할 수 있다. 예를 들어, 컨텐츠 생성자가 대응하는 컨텐츠 파일들(104-1에서 104-100)로부터의 사진들을 프레젠테이션 타일(124-1)과 연계시키는 것으로 가정한다. 100 개의 사진에 대한 섬네일들이 타일 객체들(126-1에서 126-100)로써 생성될 수 있고, 프레젠테이션 타일(124-1)에 대한 주어진 치수 내에 맞도록 크기가 조정될 수 있다. 선택기 도구를 사용하여 타일 객체들(126-1에서 126-100) 사이를 탐색하여 특정 사진을 선택하고 확대할 수 있다.
사용자가 상이한 컨텐츠 파일들(104-c)을 프레젠테이션 표면(122)의 상이한 프레젠테이션 타일들(124-a)과 연계시키기 위한 작성 작업들을 완료하면, 작성 컴포넌트(110)는 프레젠테이션 표면(122) 및 타일 객체들(126-e)을 몽타주(120)의 일부로서 저장할 수 있다.
프레젠테이션 컴포넌트(130)는 일반적으로, 전자 장치의 전자 디스플레이 상에 몽타주(120)를 제공하기 위한 사용자 인터페이스 뷰들 및 도구들의 생성을 포함하는 몽타주 애플리케이션(140)에 대한 프레젠테이션 동작들을 관리할 수 있다. 일 실시예에서, 예를 들어, 프레젠테이션 컴포넌트(130)는 몽타주(120)의 프레젠테이션 표면(122) 상의 각각의 관련 프레젠테이션 타일(124-a) 내에 각각의 타일 객체(126-e)를 제공하기 위한 제 1 사용자 인터페이스 뷰를 생성할 수 있다. 프레젠테이션 컴포넌트(130)는 타일 객체(126-e)를 선택하는 제어 명령어들(132-f)을 수신하고, 선택된 타일 객체(126-e)에 대응하는 컨텐츠 파일(104-c)을 제공하기 위한 제 2 사용자 인터페이스 뷰를 생성할 수 있다.
도 2는 몽타주 애플리케이션(140)의 작성 컴포넌트(110)의 보다 상세한 블록도를 나타낸다. 작성 컴포넌트(110)는 컨텐츠 파일(104-c) 타입에 대한 타입 정의에 기반하여 컨텐츠 파일(104-c)로부터 컨텐츠의 특정 부분들을 검색함으로써 관련 컨텐츠 파일(104-c)에 대한 타일 객체(126-e)를 지능적으로 생성할 수 있다. 예를 들어, 컨텐츠의 일부는 컨텐츠 파일(104-c)로부터의 텍스트, 컨텐츠 파일(104-c)에 대한 메타데이터, 컨텐츠 파일(104-c)로부터의 객체 또는 이들의 임의의 조합을 포함할 수 있다.
일 실시예에서, 컨텐츠 파일(104-c)은 몽타주 애플리케이션(140)을 구현하는 동일한 전자 장치 내에 구현되는 로컬 데이터 저장소(210)에 저장될 수 있다. 예를 들어, 컴퓨팅 장치는 컴퓨팅 장치의 대용량 저장 장치에 저장된 컨텐츠 파일들(104-1, 104-2)을 사용하여 몽타주 애플리케이션(140)을 구현할 수 있다. 일 실시예에서, 컨텐츠 파일(104-c)은 몽타주 애플리케이션(140)을 구현하는 것으로 상이한 전자 장치에 의해 구현되는 원격 데이터 저장소(212)에 저장될 수 있다. 예를 들어, 컴퓨팅 장치는 서버 장치의 대용량 저장 장치에 저장된 컨텐츠 파일(104-3)을 사용하여 몽타주 애플리케이션(140)을 구현할 수 있다.
도 2에 도시된 실시예에서, 작성 컴포넌트(110)는 다수의 타입 모듈(202-g)을 포함하거나 구현할 수 있다. 각각의 타입 모듈(202-g)은 각각의 컨텐츠 파일(104-c)에 대한 컨텐츠 파일 타입에 대응할 수 있다. 컨텐츠 파일(104-c)에 대한 컨텐츠 파일 타입의 예는 워드 프로세싱 파일 타입, 스프레드시트 파일 타입, 프레젠테이션 파일 타입, PIM 파일 타입, 데이터베이스 파일 타입, 발행자 파일 타입, 그림 파일 타입, 노트 파일 타입, 메시지 파일 타입 등과 같은 애플리케이션 파일 타입들을 포함할 수 있지만, 이에 제한되지 않는다. 컨텐츠 파일(104-c)에 대한 추가적인 예는 오디오 파일 타입, 이미지 파일 타입, 비디오 파일 타입, AV 파일 타입, 애니메이션 파일 타입, 게임 파일 타입, 마크업 파일 타입, 웹페이지 타입 등과 같은 멀티미디어 파일 타입들을 포함할 수 있다. 이들은 컨텐츠 파일 타입의 몇 가지 예에 불과하며, 실시예들은 이러한 예시들로 제한되지 않음을 알 것이다.
타입 모듈(202-g)은 컨텐츠 파일 타입에 대한 타입 정의(204-h)에 기반하여 컨텐츠 파일(104-c)로부터 정보를 검색할 수 있으며, 검색된 정보 및 타입 정의(204-h)에 기반하여 타일 객체(126-e)를 생성할 수 있다. 타입 정의(204-h)는 컨텐츠 파일(104-c)로부터 선택된 부분들을 추출하고 추출된 부분들을 프레젠테이션 타일(124-a)의 정의된 영역 내에 포맷팅하기 위한 정의들, 규칙들, 프로퍼티들, 메소드들, 이벤트들, 좌표들 또는 명령어들의 세트를 포함할 수 있다. 특정 컨텐츠 파일들(104-c)에 대한 특정 타입 정의들(204-h)을 구현함으로써, 작성 컴포넌트(110)는 특정 상황(예를 들어, 비즈니스, 개인적 상황) 및 관련된 컨텐츠 소비자 세트를 위해 구체적으로 설계된 고도로 맞춤화된 타일 객체들(126-e)을 생성할 수 있다. 타입 정의(204-h)는 몽타주 애플리케이션(140)과 함께 제공되는 디폴트 타입 정의, 또는 몽타주 애플리케이션(140)을 사용하여 생성되는 사용자-정의(user-defined) 타입 정의일 수 있다.
예를 들어, 컨텐츠 파일(104-1)이 워드 프로세싱 문서(104-1)이고, 타입 모듈(202-1)이 워드 프로세싱 파일 타입에 대한 것이며, 타입 정의(204-1)가 워드 프로세싱 파일 타입에 대한 정의들의 세트인 것으로 가정한다. 타입 정의(204-1)는 타일 객체(126-1)를 생성하는 데 사용되는 다양한 타입의 정보를 포함할 수 있다. 예를 들어, 타입 정의(204-1)는 확장형 마크업 언어 포맷들(예를 들어, .docx, docm, .dotx, .dotm), 이진 포맷들(예를 들어, .doc, .dot), 및 개방 문서 포맷들(예를 들어, .odt)과 같은, 워드 프로세싱 애플리케이션의 상이한 버전들과 관련되어 지원되는 파일 포맷들을 포함할 수 있다. 타입 정의(204-1)는 암호화된 파일들에 액세스하기 위한 보안 증명서들(예를 들어, 패스워드, 인증서, 공개 또는 비공개 키)을 포함할 수 있다. 타입 정의(204-1)는 파일에 대한 내장된 또는 로딩된 코드(예를 들어, 매크로, 확장 팩)에 액세스하기 위한 도구들을 포함할 수 있다. 타입 정의(204-1)는 문서 내의 지원되는 필드들(예를 들어, Ask 필드, Author 필드, Database 필드, Fillin 필드, Includepicture 필드, Includetext 필드, Mailmerge 필드)을 포함할 수 있다. 타입 정의(204-1)는 문서에 대한 링크들(예를 들어, 링크된 객체, 마스터 문서, 템플릿 참조, 링크된 캐스케이딩 스타일 시트 참조)을 처리하기 위한 규칙들을 포함할 수 있다. 타입 정의(204-1)는 데이터 세트들(예를 들어, 메일 병합 데이터)을 처리하기 위한 규칙들을 포함할 수 있다. 타입 정의(204-1)는 객체 링킹 및 삽입(OLE) 객체들을 처리하기 위한 규칙들을 포함할 수 있다. 타입 정의(204-1)에 대한 다른 정보가 가능하며, 실시예들은 이에 제한되지 않는다.
또한, 타입 정의(204-1)는 컨텐츠 파일(104-1)로부터 검색할 정보의 타입들에 관한 규칙들의 세트를 포함할 수 있다. 예를 들어, 타입 정의(204-1)는 컨텐츠 파일(104-1)로부터의 컨텐츠 및 프로퍼티 클래스(예를 들어, 단락 또는 프로퍼티), 컨텐츠 파일(104-1)에 대한 컨텐츠 객체 클래스(예를 들어, 이미지, 삽입 객체) 및 컨텐츠 파일(104-1) 내의 컨텐츠 페이지 클래스 또는 이들의 특정 조합을 포함하는 세 가지 정보 클래스 및 관련 규칙들을 포함할 수 있다. 임의 수의 클래스 또는 카테고리가 주어진 컨텐츠 파일 타입에 대해 정의될 수 있다는 점을 알 수 있다.
일 실시예에서, 컨텐츠 및 프로퍼티 클래스의 예시들이 아래와 같이 표 1에 도시될 수 있다.
컨텐츠 / 프로퍼티 설명
제목(프로퍼티) 문서의 제목 프로퍼티
초록 문서의 초록
파일 이름 문서의 파일 이름
작성자 문서의 작성자
제목(제목 스타일의 첫 번째 사례) 제목 스타일이 적용된 첫 번째 단락
처음 N 개의 본문 문서 내의 처음 N 개의 본문
처음 N 개의 머릿말 문서에서 사용된 처음 N 개의 단락 머릿말
일 실시예에서, 컨텐츠 객체 클래스의 예시들이 아래와 같이 표 2에 도시될 수 있다.
객체 설명
첫 번째 이미지(표에 없음) 표에 없는 문서 내의 첫 번째 이미지
ㆍ이미지가 채워져 타일의 중앙에 위치함
첫 번째 이미지(채워져 중앙 배치) 문서의 첫 번째 이미지
ㆍ이미지가 채워져 타일의 중앙에 위치함
첫 번째 표 문서 내의 첫 번째 표
ㆍ표 이미지가 타일 내에 맞도록 잘라내기(clipping)된다.
ㆍLTR 언어를 포함하는 표의 경우, 표의 맨 위 왼쪽 코너에서 잘라내기가 시작될 것이다.
ㆍRTL 언어를 포함하는 표의 경우, 표의 맨 위 오른쪽 코너에서 잘라내기가 시작될 것이다.
첫 번째 스마트아트(채워져 중앙 배치) 문서 내의 첫 번째 스마트아트 그래픽
ㆍ스마트아트 이미지가 채워져 타일의 중앙에 위치함
첫 번째 차트(채워져 중앙 배치) 문서 내의 첫 번째 차트
ㆍ차트가 채워져 타일의 중앙에 위치함
컨텐츠 표(TOC)(웹 레이아웃) 문서 내에서 웹 레이아웃으로 보이는 첫 번째 TOC
첫 번째 스마트아트(축소) 문서 내의 첫 번째 스마트아트 그래픽
ㆍ타일 안에 들어가도록 스마트아트 이미지가 축소되어 중앙에 위치함
첫 번째 차트(축소) 문서 내의 첫 번째 차트 그래픽
ㆍ타일 안에 들어가도록 차트가 축소되어 중앙에 위치함
첫 번째 방정식 문서 내의 첫 번째 방정식
TOC(프린트 레이아웃) 문서 내에서 프린트 레이아웃으로 보이는 첫 번째 TOC. 타일의 차원에 맞도록 TOC가 잘려질 것이다.
일 실시예에서, 컨텐츠 페이지 클래스의 예시들이 아래와 같이 표 3에 도시될 수 있다.
페이지 설명
첫 번째 페이지(프린트 레이아웃+축소) 프린트 레이아웃으로 표현되는 문서의 첫 번째 페이지(비-표지 페이지)
ㆍ타일 안에 들어가도록 이미지가 축소되어 중앙에 위치함
첫 번째 페이지(웹 레이아웃) 웹 레이아웃으로 표현되는 문서의 첫 번째 페이지(비-표지 페이지)
표지 페이지(프린트 레이아웃+축소) 프린트 레이아웃으로 표현되는 문서의 첫 번째 표지 페이지
ㆍ타일 안에 들어가도록 이미지가 축소되어 중앙에 위치함
첫 번째 페이지(프린트 레이아웃) 프린트 레이아웃으로 표현되는 문서의 첫 번째 페이지(비-표지 페이지)
ㆍ이미지가 채워져 타일의 중앙에 위치함
표지 페이지(프린트 레이아웃) 프린트 레이아웃으로 표현되는 문서의 첫 번째 표지 페이지
ㆍ이미지가 채워져 타일의 중앙에 위치함
표지 페이지(웹 레이아웃) 웹 레이아웃으로 표현되는 문서의 첫 번째 표지 페이지
작성 컴포넌트(110)는 타입 모듈(202-1) 및 관련 타입 정의(204-1)를 사용하여, 로컬 데이터 저장소(210)의 컨텐츠 파일(104-1)로부터 컨텐츠 부분(106-1)을 검색할 수 있다. 이어서, 타입 모듈(202-1)은 컨텐츠 부분(106-1)을 체계화하고 포맷팅하여 타일 객체(126-1)를 생성할 수 있다. 예를 들어, 타입 정의(204-1)에 대한 규칙은 처음 N 개의 단락과 같이, 문서 내에서 검색된 임의의 텍스트가 문서 내에 지정된 바와 같은 스타일 포맷팅을 유지하는 것으로 지정할 수 있다. 다른 규칙은 문서 내의 실제 텍스트가 아닌 컨텐츠 프로퍼티들이 문서 내에 지정된 바와 같은 정상 스타일로써 포맷팅되는 것일 수 있다. 또 다른 규칙은 컨텐츠 부분(106-1)의 전체 텍스트가 프레젠테이션 타일(124-1)의 치수들 내에 맞지 않는 경우에 텍스트의 끝에 생략 부호 "..."를 첨부하는 것일 수 있다. 이들은 일부 예시적인 규칙들에 불과하며, 다른 규칙들도 가능하다. 실시예들은 이에 제한되지 않는다.
경우에 따라서, 타입 정의(204-1)는 때때로 비공식적으로 "매쉬업(mashup)"으로 지칭되는, 컨텐츠 및 프로퍼티 클래스, 컨텐츠 객체 클래스 및 컨텐츠 페이지 클래스의 조합으로부터 타일 객체(126-1)를 생성하기 위한 규칙들의 세트를 정의할 수 있다. 이는 컨텐츠 파일(104-1)의 컨텐츠를 표현하도록 구성된 고도로 맞춤화된 타일 객체(126-1)를 제공한다.
일 실시예에서, 상이한 클래스 조합들의 예시들이 아래와 같이 표 4에 도시될 수 있다.
클래스 조합 설명
제목+작성자+처음 N 개의 단락 한 라인에 제목, 그 다음에 작성자, 그 다음에 타일에 들어갈 수 있는 처음 N 개의 단락
제목+작성자 한 줄에 제목, 그 다음에 작성자
제목+처음 N 개의 단락 한 줄에 제목, 그 다음에 타일에 들어갈 수 있는 처음 N 개의 단락
파일 이름+작성자+처음 N 개의 단락 제목이 없는 경우, 한 줄에 파일 이름, 그 다음에 작성자, 그 다음에 타일에 들어갈 수 있는 처음 N 개의 단락 사용
파일 이름+작성자 제목이 없는 경우, 한 줄에 파일 이름, 그 다음에 작성자 사용
파일 이름+처음 N 개의 단락 제목이 없는 경우, 한 줄에 파일 이름, 그 다음에 타일에 들어갈 수 있는 처음 N 개의 단락 사용
제목+첫 번째 이미지(표에 없음) 한 줄에 제목, 그 다음에 표에 없는 첫 번째 이미지
파일 이름+첫 번째 이미지(표에 없음) 제목이 없으면, 한 줄에 파일 이름, 그 다음에 표에 없는 첫 번째 이미지 사용
타입 정의(204-1)는 타일 객체(126-1)를 단일 클래스 또는 클래스 내의 타입으로 제한하는 규칙들도 제공할 수 있다. 예를 들어, 규칙은 컨텐츠 파일(104-1)로부터의 텍스트의 형태의 컨텐츠, 또는 컨텐츠 파일(104-1)에 대한 이미지들의 형태의 컨텐츠 객체들만을 사용하도록 타입 모듈(202-1)을 정의할 수 있다.
타입 정의(204-1)는 컨텐츠 파일(104-1)에 대한 타일 객체(126-1)를 생성하기 위한 장치를 추가적으로 식별할 수 있다. 예를 들어, 규칙은 타일 객체(126-1)를 생성하고 검색하기 위해 서버 장치와 인터랙션하도록 타입 모듈(202-1)을 정의할 수 있다.
타입 정의(204-1)는 최종 선택을 위해 사용자에게 제공할 타일 객체(126-1)의 다수의 버전의 목록을 생성하기 위한 규칙을 더 제공할 수 있다. 예를 들어, 규칙은 타일 객체(126-1)의 P 개의 버전을 생성할 수 있으며, P는 임의의 양의 정수(예를 들어, P = 10)를 나타낼 수 있다. 타일 객체(126-1)의 다수의 버전의 목록이 아래와 같이 표 5에 주어진 예시들에 따라 생성될 수 있다.
타일 객체 버전 클래스
제목+작성자+처음 N 개의 단락 클래스 조합
파일 이름+작성자+처음 N 개의 단락 클래스 조합
제목+처음 N 개의 단락 클래스 조합
파일이름+처음 N 개의 단락 클래스 조합
제목+첫 번째 이미지(표에 없음) 클래스 조합
파일 이름+첫 번째 이미지(표에 없음) 클래스 조합
제목+작성자 클래스 조합
파일 이름+작성자 클래스 조합
첫 번째 페이지(프린트 레이아웃) 페이지
표지 페이지(프린트 레이아웃) 페이지
첫 번째 페이지(웹 레이아웃) 페이지
표지 페이지(프린트 레이아웃+축소) 페이지
초록 컨텐츠/프로퍼티
제목(프로퍼티) 컨텐츠/프로퍼티
처음 N 개의 본문 컨텐츠/프로퍼티
파일 이름 컨텐츠/프로퍼티
첫 번째 이미지(채워져 중앙 배치) 컨텐츠 객체
첫 번째 차트(채워져 중앙 배치) 컨텐츠 객체
첫 번째 스마트아트(채워져 중앙 배치) 컨텐츠 객체
TOC(웹 레이아웃) 페이지
첫 번째 표 컨텐츠 객체
첫 번째 이미지(표에 없음) 컨텐츠 객체
첫 번째 차트 (축소) 컨텐츠 객체
첫 번째 스마트아트(축소) 컨텐츠 객체
첫 번째 방정식 컨텐츠 객체
제목(제목 스타일의 첫 번째 사례) 컨텐츠/프로퍼티
첫 번째(프린트 레이아웃+축소) 페이지
표지 페이지(웹 레이아웃) 페이지
TOC(프린트 레이아웃) 컨텐츠 객체
작성자 컨텐츠/프로퍼티
처음 N 개의 머릿말 컨텐츠/프로퍼티
타입 모듈(202-g)은 타입 정의(204-h)에 의해 제공되는 정보 외에 추가적인 정보를 사용하여 타일 객체(126-e)를 생성할 수 있다. 예를 들어, 타입 모듈(202-g)은 컨텐츠 파일(104-a)에 대해 선택된 프레젠테이션 타일(124-a)에 대한 입력 정보를 수신할 수 있다. 타입 모듈(202-g)은 위치, 크기, 형상, 치수, 기하 구조, 경계들, 인접 프레젠테이션 타일들(124-a), 이웃 프레젠테이션 타일들(124-a) 등과 같은 정보를 수신할 수 있다. 예를 들어, 타입 모듈(202-1)이 타입 정의(204-1)를 사용하여 프레젠테이션 타일(124-1)의 현재 치수들에 비해 너무 큰 타일 객체(126-1)를 구성하고 있는 경우, 타입 모듈(202-1)은 인접 또는 이웃 프레젠테이션 타일들(124-2, 124-3)에 대한 정보를 사용하여, 프레젠테이션 타일(124-1)에 대한 현재 치수들이 더 큰 타일 객체(126-1)를 수용하도록 증가될 수 있으며, 그에 따라 프레젠테이션 타일들(124-2, 124-3)에 대한 치수들이 감소될 수 있는지를 결정할 수 있다. 작성 컴포넌트(110)는 이런 예시들을 수용하기 위한 다양한 맞춤 알고리즘을 구현할 수 있다.
도 3a는 작성 컴포넌트(110)에 의해 생성되는 사용자 인터페이스 뷰(300)의 일 실시예를 도시한다. 사용자 인터페이스 뷰(300)는 컨텐츠 파일들(104-c)에 대해 임의의 타일 객체들(126-e)이 생성되기 전에 다수의 비어 있는 프레젠테이션 타일(124-a)을 갖는 프레젠테이션 표면(122)을 포함할 수 있다. 사용자 인터페이스 뷰(300)는 복사 명령(302-1), 자르기 명령(302-2) 및 붙이기 명령(302-3)과 같이 작성자로부터 제어 명령어들(102-b)을 수신하기 위한 다양한 그래픽 사용자 인터페이스(GUI) 도구들(302-s)도 포함할 수 있다. 도 3a에 도시된 것들 외에, 이동 명령, 붙이기 특수 명령 등과 같은 다른 GUI 도구들(302-s)이 사용될 수도 있다.
사용자 인터페이스 뷰(300)는 파일 탐색 도구(304)를 더 포함할 수 있다. 파일 탐색 도구(304)는 데이터 파일들이 저장된 파일 시스템을 탐색하도록 설계된 특정 OS에 대한 파일 관리자 애플리케이션을 포함할 수 있다. 예를 들어, 파일 탐색 도구(304)는 로컬 데이터 저장소(210) 또는 원격 데이터 저장소(212)로부터 다양한 컨텐츠 파일들(104-c)을 탐색 및 제공하는 데 사용될 수 있다. 파일 탐색 도구(304)의 일례는 MICROSOFT WINDOWS 운영 체제용으로 설계된 MICROSOFT WINDOWS EXPLORER를 포함할 수 있다. 다른 파일 탐색 도구들도 사용될 수 있다.
작성 동작들 중에, 작성 컴포넌트(110)는, 예를 들어, 터치 스크린 디스플레이 상의 포인팅 장치(308)나 제스처(310)와 같은 입력 장치로부터 컨텐츠 파일(104-1)을 프레젠테이션 타일(124-1)과 연계시키는 제어 명령어들(102-b)을 수신할 수 있다. 예를 들어, 컨텐츠 생성자는 파일 탐색 도구(304)를 사용하여, 하나 또는 양쪽 데이터 저장소(210, 212)에 의해 저장된 컨텐츠 파일들(104-c)을 탐색 및 제공함으로써 몽타주(120)를 생성할 수 있다. 컨텐츠 생성자는 터치 스크린 디스플레이 상의 포인팅 장치(308)나 제스처(310)와 같은 다양한 입력 장치들을 사용하여 프레젠테이션 타일(124-a)에 대한 컨텐츠 파일(104-c)을 선택할 수 있다. 도시된 바와 같이, 포인팅 장치(308)는 컨텐츠 파일(104-1)을 선택하고, 드래그 앤 드롭 기술을 사용하여 컨텐츠 파일(104-1)을 프레젠테이션 타일(124-1) 위로 이동시키는 데 사용될 수 있다. 대안으로, GUI 입력 도구들(302)이 유사한 동작들을 수행하는 데 사용될 수 있다.
도 3b는 작성 컴포넌트(110)에 의해 생성된 사용자 인터페이스 뷰(320)의 일 실시예를 도시한다. 사용자 인터페이스 뷰(320)는 컨텐츠 파일(104-1)에 대해 타일 객체(126-1)가 생성된 후에 프레젠테이션 타일(124-1)로 채워진 프레젠테이션 표면(122)을 포함할 수 있다. 컨텐츠 생성자가 컨텐츠 파일(104-1)을 선택하고, 이를 프레젠테이션 타일(124-1)과 연계시키면, 작성 컴포넌트(110)는 컨텐츠 파일(104-1)에 대한 컨텐츠 파일 타입을 식별할 수 있다. 본 예시에서, 작성 컴포넌트(110)는 컨텐츠 파일(104-1)에 대한 컨텐츠 파일 타입을 애플리케이션 파일 타입, 보다 구체적으로는 워드 프로세싱 파일로 식별한다. 작성 컴포넌트(110)는 워드 프로세싱 파일들로부터 타일 객체들을 생성하도록 구체적으로 설계된 타입 모듈(202-1) 및 타입 정의(204-1)를 사용할 수 있다. 타입 모듈(202-1)은 타입 정의(204-1)를 사용하여, 컨텐츠 파일(104-1)로부터 적절한 컨텐츠 부분(106-1)을 검색할 수 있으며, 컨텐츠 부분(106-1)은 컨텐츠 및 프로퍼티 클래스, 컨텐츠 객체 클래스, 컨텐츠 페이지 클래스 또는 클래스 조합의 정보를 포함할 수 있다. 타입 모듈(202-1)은 컨텐츠 부분(106-1)을 사용하여 타일 객체(126-1)를 생성하며, 타일 객체(126-1)를 프레젠테이션 타일(124-1)의 경계들 내에 제공할 수 있다.
도 4는 타일 객체(126-1)를 생성하는 작성 컴포넌트(110)의 일례를 도시한다. 도시된 바와 같이, 컨텐츠 파일(104-1)은 제목(402), 제 1 단락(404), 제 2 단락(406) 및 다양한 메타데이터(408)를 포함하는 컨텐츠 및 프로퍼티 클래스의 다양한 타입의 정보를 포함할 수 있다. 컨텐츠 파일(104-1)은 이미지(410), 바 차트(412) 및 방정식(414)을 포함하는 컨텐츠 객체 클래스의 다양한 타입의 정보를 더 포함할 수 있다. 타입 정의(204-1)는 "타일 템플릿 1"로 라벨링된 특정 타일 템플릿을 사용하기 위한 제 1 규칙, 제목(402)을 검색하기 위한 제 2 규칙, 메타데이터(408)로부터 작성자를 검색하기 위한 제 3 규칙, 처음 N 개의 단락(404, 406)(예를 들어, N = 2)을 검색하기 위한 제 4 규칙 및 이 경우에 바 차트(412)인 첫 번째 그래프를 검색하기 위한 제 5 규칙을 포함하는 5 개의 규칙을 포함할 수 있다. 타입 모듈(201-1)은 타입 정의(204-1)를 사용하여, 타입 정의(204-1)의 규칙 1-5에 따라 컨텐츠 파일(104-1)로부터 컨텐츠 부분(106-1)을 검색하고, 타일 객체(126-1)를 생성할 수 있으며, 이 타일 객체는 "타일 템플릿 1"에 따라 포맷팅된 컨텐츠 부분(106-1)의 특정 정보를 갖는 사용자 인터페이스 뷰로 제공된다.
도 5는 몽타주 애플리케이션(140)에 의해 생성된 몽타주(120)를 발행 또는 배포하는 데 적합한 메시징 시스템(500)의 일 실시예를 도시한다. 컨텐츠 생성자는 사용자 인터페이스 컴포넌트(540)에 의해 제공되는 다양한 사용자 인터페이스 뷰들을 사용하는 몽타주 애플리케이션(140)을 이용하여 몽타주(120)를 생성할 수 있다. 사용자 인터페이스(538)는 몽타주 애플리케이션(140)에 대한 고유(native) 사용자 인터페이스 컴포넌트, 또는 몽타주 애플리케이션(140)을 실행하는 OS(예를 들어, Microsoft Windows)에 대한 사용자 인터페이스 컴포넌트를 포함할 수 있다. 몽타주(120)가 생성되면, 컨텐츠 생성자는 발행 모델, 메시징 모델, 또는 발행 모델과 메시징 모델의 조합을 사용하여 몽타주(120)를 다양한 컨텐츠 소비자들에게 배포할 수 있다.
일 실시예에서, 몽타주 애플리케이션(140)은 발행 컴포넌트(532)를 사용하여 로컬 데이터 저장소(210)의 몽타주 및 관련 컨텐츠 파일들(104-c)을 원격 데이터 저장소(212)로 발행할 수 있다. 원격 데이터 저장소(212)는, 예를 들어, 소셜 네트워킹 서비스(SNS)와 같은 네트워크 서비스에 의해 액세스될 수 있는 네트워크 저장 서버(550)의 일부로서 구현될 수 있다. 컨텐츠 소비자들은 네트워크 서비스에 액세스하여 네트워크 서비스 버전들을 볼 수 있다.
일 실시예에서, 몽타주 애플리케이션(140)은 고유 메시지 컴포넌트(534)를 사용하여, 메시지 서버(540)와 같은 메시징 아키텍처를 통해 몽타주(120) 및 관련 컨텐츠 파일들(104-c)을 메시지(516) 및 메시지 첨부로써 전송할 수 있다. 컨텐츠 소비자들은 메시지 버전들에 액세스하여 볼 수 있다. 대안으로, 몽타주 애플리케이션(140)은 외부(비고유) 메시지 애플리케이션(542-k)을 사용할 수 있다.
일 실시예에서, 몽타주 애플리케이션(140)은 몽타주(120) 및 관련 컨텐츠 파일들(104-c)을 네트워크 서비스로 발행함으로써 발행 모델 및 메시징 모델 양자의 조합을 사용하고, 몽타주(120) 및 관련 컨텐츠 파일들(104-c)의 네트워크 버전들에 대한 링크들(518-n)을 수신하고, 링크들(518-n)을 갖는 메시지(516)를 전송할 수 있다. 컨텐츠 소비자들은 메시지(516)에 액세스하고, 링크(518-n)를 선택하고, 몽타주(120)의 네트워크 버전을 볼 수 있다. 또한, 컨텐츠 소비자들은 몽타주(120)의 타일 객체(126-e)를 선택하여, 선택된 타일 객체(126-e)와 관련된 컨텐츠 파일(104-c)의 네트워크 버전을 볼 수 있다.
몽타주 애플리케이션(140)은 보안(security) 컴포넌트(536)를 사용하여, 컨텐츠 소비자들에 의한 몽타주(120) 및 관련 컨텐츠 파일들(104-c)에 대한 허가 및 액세스를 관리할 수 있다. 보안 컴포넌트(536)는 계정, 인증 정보, 인가 정보, 보안 정보(예를 들어, 암호화/해독 알고리즘, 보안 키, 증명서 등), 허가 레벨 등을 관리할 수 있다. 일 실시예에서, 보안 컴포넌트(536)는 네트워크 서비스에 의해 액세스될 수 있는 네트워크 저장 서버(550)에 대해 로컬 데이터 저장소(210)로부터 원격 데이터 저장소(212)로의 컨텐츠 파일들(104-c)의 통신을 인가하기 위한 컨텐츠 생성자로부터의 명령을 나타내는 제어 명령어를 입력 장치로부터 수신할 수 있다.
도 5에 도시된 실시예에서, 메시징 시스템(500)은 모두가 네트워크(530)를 통해 통신하는 다수의 컴퓨팅 장치(510-j), 메시지 서버(540) 및 네트워크 저장 서버(550)를 포함할 수 있다. 컴퓨팅 장치들(510-j)은 각각 몽타주 애플리케이션(140) 및/또는 하나 이상의 메시지 애플리케이션(542-k)을 구현할 수 있다. 도 5에 도시된 바와 같은 메시징 시스템(500)은 특정 토폴로지 내에 제한된 수의 요소를 갖지만, 메시징 시스템(500)은 주어진 구현에 대한 필요에 따라 대안 토폴로지들 내에 더 많거나 적은 요소를 포함할 수 있음을 알 수 있다.
네트워크(530)는 메시징 시스템(500)의 다양한 장치들 사이에서 정보를 전달하도록 설계된 통신 프레임워크를 포함할 수 있다. 네트워크(530)는 패킷 교환 네트워크들(예를 들어, 인터넷과 같은 공용 네트워크, 기업 인트라넷과 같은 사설 네트워크 등), 회선 교환 네트워크들(예를 들어, 공중 교환 전화망), 또는 (적절한 게이트웨이들 및 변환기들을 갖는) 패킷 교환 네트워크들과 회선 교환 네트워크들의 조합과 함께 사용하기에 적합한 기술들과 같은 임의의 잘 알려진 통신 기술들을 구현할 수 있다.
메시지 서버(540)는 설명되는 실시예들에 따른 다양한 방법들을 수행하도록 동작하는 하나 이상의 서버 컴퓨팅 장치 및/또는 서버 프로그램을 포함하거나 사용할 수 있다. 예를 들어, 설치 및/또는 배치될 때, 서버 프로그램은 특정 서비스들 및 특징들을 제공하기 위한 서버 컴퓨팅 장치의 하나 이상의 서버 역할을 지원할 수 있다. 예시적인 메시지 서버(540)는, 예를 들어, MICROSOFT OS, UNIX® OS, LINUX® OS 또는 다른 적절한 서버 기반 OS와 같은 서버 OS를 동작시키는 독립형 및 기업 클래스 서버 컴퓨터들을 포함할 수 있다. 예시적인 서버프로그램들은, 예를 들어, 착신 및 발신 메시지들을 관리하기 위한 MICROSOFT OFFICE COMMUNICATIONS SERVER(OCS)와 같은 통신 서버 프로그램들, 이메일, 음성 메일, VoIP, 인스턴트 메시징(IM), 그룹 IM, 향상된 프레즌스(enhanced presence) 및 오디오-비디오 회의에 대한 통합 메시징(UM)을 제공하기 위한 MICROSOFT EXCHANGE SERVER와 같은 메시징 서버 프로그램들, 및/또는 설명되는 실시예들에 따른 다른 타입의 프로그램들, 애플리케이션들 및 서비스들을 포함할 수 있다.
네트워크 저장 서버(550)도 설명되는 실시예들에 따른 다양한 방법들을 수행하도록 동작하는 하나 이상의 서버 컴퓨팅 장치 및/또는 서버 프로그램을 포함하거나 사용할 수 있다. 예를 들어, 설치 및/또는 배치될 때, 서버 프로그램은 특정 서비스들 및 특징들을 제공하기 위한 서버 컴퓨팅 장치의 하나 이상의 서버 역할을 지원할 수 있다. 예시적인 네트워크 저장 서버(550)는, 예를 들어, MICROSOFT OS, UNIX OS, LINUX OS 또는 다른 적절한 서버 기반 OS와 같은 서버 OS를 동작시키는 독립형 및 기업 클래스 서버 컴퓨터들을 포함할 수 있다. 예시적인 서버 프로그램들은, 예를 들어, 이미지, 사진, 사진 앨범, 비디오, 비디오 앨범 등과 같은 멀티미디어 또는 미디어 파일들을 포함하는, 문서들 및 파일들의 온라인 네트워크 저장을 제공하는 MICROSOFT LIVE와 같은 네트워크 저장 서버 프로그램들을 포함할 수 있다. 예시적인 서버 프로그램들은, 예를 들어, 소셜 네트워킹 애플리케이션 프로그램, 검색 애플리케이션, 문서 관리 프로그램, 웹로그(블로그), 워드 프로세싱 프로그램, 스프레드시트 프로그램, 데이터베이스 프로그램, 그림 그리기 프로그램, 문서 공유 프로그램, 메시지 애플리케이션, 웹 서비스, 웹 애플리케이션, 웹 서버, 및/또는 설명되는 실시예들에 따른 다른 타입의 프로그램, 애플리케이션 또는 서비스와 같은 네트워크 애플리케이션 프로그램들을 더 포함할 수 있다.
컴퓨팅 장치들(510-j)은 각각 프로세서(502) 및 프로세서(502)에 통신 가능하게 결합된 메모리(504)를 포함할 수 있다. 프로세서(502) 및 메모리(504)는 각각 통신 인터페이스(509)에 통신 가능하게 결합될 수 있다. 컴퓨팅 장치들(510-j)에 대한 예시적인 아키텍처 및 예시들은 도 10을 참조하여 설명될 수 있다.
통신 인터페이스(509)는 컴퓨팅 장치들(510-j)로 하여금 네트워크(530)를 통해 서로 그리고 메시징 시스템(500)의 나머지 장치들과 통신할 수 있게 해주는 다양한 통신 기술들을 포함하거나 구현할 수 있다. 예를 들어, 메시징 시스템(500)의 다양한 장치들은 각각 하나 이상의 통신 인터페이스, 네트워크 인터페이스, 네트워크 인터페이스 카드(NIC), 라디오, 무선 송신기/수신기(송수신기), 유선 및/또는 무선 통신 매체, 물리적 접속기 등과 같이 네트워크(530)와 연동할 수 있도록 설계된 다양한 타입의 표준 통신 요소들을 구현하는 통신 인터페이스(509)를 포함할 수 있다. 제한이 아닌 예를 들어, 통신 매체는 유선 통신 매체 및 무선 통신 매체를 포함한다. 유선 통신 매체의 예는 와이어, 케이블, 금속 도선, 인쇄 회로 보드(PCB), 백플레인, 스위치 패브릭, 반도체 재료, 꼬임 쌍선 와이어(twisted-pair wire), 동축 케이블, 광섬유, 전파 신호 등을 포함할 수 있다. 무선 통신 매체의 예는 음향, 무선 주파수(RF) 스펙트럼, 적외선 및 기타 무선 매체를 포함할 수 있다.
다양한 실시예들에서, 통신 인터페이스(509)는 다수의 상이한 타입의 트랜스포트(512-m)를 포함할 수 있다. 트랜스포트들(512-m) 각각은 메시징 시스템(500)의 다양한 장치들 사이에서 정보를 전달하기 위해 동일하거나 상이한 세트의 통신 파라미터들을 구현하거나 이용할 수 있다. 일 실시예에서, 예를 들어, 트랜스포트들(512-m) 각각은 컴퓨팅 장치들(510-j)과 메시지 서버(540) 사이에서 정보를 전달하기 위해 상이한 세트의 통신 파라미터들을 구현하거나 이용할 수 있다. 통신 파라미터들의 일부 예시들은 통신 프로토콜, 통신 표준, 무선 주파수(RF) 대역, 라디오, 송신기/수신기(송수신기), 라디오 프로세서, 기저대역 프로세서, 네트워크 스캐닝 임계 파라미터, 무선 주파수 채널 파라미터, 액세스 포인트 파라미터, 레이트(rate) 선택 파라미터, 프레임 크기 파라미터, 집합(aggregation) 크기 파라미터, 패킷 재시도 한계 파라미터, 프로토콜 파라미터, 라디오 파라미터, 변조 및 코딩 방식(MCS), 수신 확인 파라미터, 매체 접근 제어(MAC) 계층 파라미터, 물리(PHY) 계층 파라미터, 및 컴퓨팅 장치들(510-j)에 의해 구현되는 통신 인터페이스(509)에 대한 동작들에 영향을 주는 임의의 다른 통신 파라미터들을 포함할 수 있지만, 이에 제한되지 않는다. 실시예들은 이에 제한되지 않는다.
다양한 실시예들에서, 컴퓨팅 장치(510-1)의 통신 인터페이스(509)는 다양한 대역폭들 및 통신 속도들을 제공하는 상이한 통신 파라미터들을 구현할 수 있다. 예를 들어, 트랜스포트(512-1)는 네트워크(530)로의 정보의 고속 통신을 위한 적절한 통신 파라미터들을 구현하는 고속 인터페이스를 포함할 수 있는 반면, 트랜스포트(512-2)는 네트워크(530)로의 정보의 저속 통신을 위한 적절한 통신 파라미터들을 구현하는 저속 인터페이스를 포함할 수 있다.
유선 통신과 관련하여, 예를 들어, 트랜스포트(512-1)는 인터넷과 같은 패킷 교환 네트워크를 통해 정보를 전달하도록 설계된 네트워크 인터페이스를 포함할 수 있다. 트랜스포트(512-1)는 상이한 타입의 유선 네트워크 시스템들 또는 프로토콜들에 따라 데이터 통신 기능을 제공하도록 배열될 수 있다. 데이터 통신 서비스들을 제공하는 적절한 유선 네트워크 시스템들의 예는, 통신 표준들의 인터넷 엔지니어링 태스크 포스(IETF) 전송 제어 프로토콜(TCP) 및 인터넷 프로토콜(IP) 모음, 사용자 데이터그램 프로토콜(UDP), 데이터그램 혼잡 제어 프로토콜(DCCP), 스트림 제어 전송 프로토콜(SCTP), 자원 예약 프로토콜(RSVP), 명시적 혼잡 통지(ECN) 프로토콜, 프로토콜들의 개방 최단 경로 우선(OSPF) 모음, 신뢰성 있는 트랜스포트 프로토콜(RTP), IETF 실시간 트랜스포트 프로토콜(RTP) 등을 포함할 수 있다. 트랜스포트(512-2)는 단순 메일 전송 프로토콜(SMTP), 확장형 SMTP(ESMTP), 포스트 오피스 프로토콜(POP), POP3, 인터넷 메시지 액세스 프로토콜(IMAP), 다목적 인터넷 메일 확장(MIME) 프로토콜, 유닉스-대-유닉스 복사(UUCP) 프로토콜, ITU-T X.400 프로토콜들과 같은 프로토콜들의 국제 전기 통신 연합(ITU) 모음 등과 같은 상이한 메시지 프로토콜들에 따라 데이터 통신을 제공하도록 배열될 수 있다. 다른 유선 통신 기술들이 구현될 수 있음을 알 수 있으며, 실시예들은 이에 제한되지 않는다.
무선 통신과 관련하여, 예를 들어, 트랜스포트(512-1)는 무선 근거리 네트워크(WLAN)를 통해 정보를 전달하도록 설계된 라디오를 포함할 수 있다. 트랜스포트(512-1)는 상이한 타입의 무선 네트워크 시스템들 또는 프로토콜들에 따라 데이터 통신 기능을 제공하도록 배열될 수 있다. 데이터 통신 서비스들을 제공하는 적절한 무선 네트워크 시스템들의 예는, 표준 프로토콜들 및 변형들의 IEEE 802.11a/b/g/n 시리즈("WiFi"라고도 함), 표준 프로토콜들 및 변형들의 IEEE 802.16 시리즈("WiMax"라고도 함), 표준 프로토콜들 및 변형들의 IEEE 802.20 시리즈 등과 같은 표준들의 IEEE(Institute of Electrical and Electronics Engineers) 802.xx 시리즈를 포함할 수 있다. 트랜스포트(512-2)는 하나 이상의 셀룰러 무선 전화 시스템에 의해 제공되는 데이터 네트워킹 링크들을 통해 정보를 전달하도록 설계된 라디오를 포함할 수 있다. 데이터 통신 서비스들을 제공하는 셀룰러 무선 전화 시스템들의 예는 GSM/GPRS(GSM with General Packet Radio Service (GPRS)) 시스템, CDMA/1xRTT 시스템, EDGE(Enhanced Data Rates for Global Evolution) 시스템, EV-DO(Evolution Data Only or Evolution Data Optimized) 시스템, EV-DV(Evolution For Data and Voice) 시스템, 고속 HSDPA(High Speed Downlink Packet Access) 시스템, HSUPA(High Speed Uplink Packet Access) 시스템 등을 포함할 수 있다. 다른 무선 기술들이 구현될 수 있음을 알 수 있으며, 실시예들은 이에 제한되지 않는다.
다양한 실시예들에서, 컴퓨팅 장치(510-1)의 통신 인터페이스(509)는 동일하거나 실질적으로 유사한 대역폭들 또는 통신 속도들을 제공하는 동일한 세트의 통신 파라미터들을 구현할 수 있다. 그러나, 트랜스포트들(512-1, 512-2)은 몽타주 애플리케이션(140) 및/또는 메시지 애플리케이션(542-1)에 의해 상이한 시점들에 사용될 수 있다. 일 실시예에서, 예를 들어, 몽타주 애플리케이션(140)은 제 1 시간 간격 동안 몽타주(120) 및 몽타주(120)에 대한 하나 이상의 컨텐츠 파일(104-c)을 통신할 수 있으며, 몽타주 애플리케이션(140) 및/또는 메시지 애플리케이션(542-1)은 제 2 시간 간격 동안 몽타주(120) 및/또는 지원 컨텐츠 파일들(104-c)에 관한 정보를 갖는 메시지(516)를 통신할 수 있다. 일 실시예에서, 예를 들어, 제 1 및 제 2 시간 간격들은 완전히 불연속적일 수 있으며, 여기서 제 1 시간 간격의 시작 시간 및 종료 시간은 제 2 시간 간격의 시작 시간 전이다. 일 실시예에서, 예를 들어, 제 1 및 제 2 시간 간격들은 부분적으로 겹칠 수 있으며, 여기서 제 1 시간 간격의 시작 시간은 제 2 시간 간격의 시작 시간 전이지만, 제 1 시간 간격의 종료 시간은 제 2 시간 간격의 시작 시간 후이다. 실시예들은 이에 제한되지 않는다.
컴퓨팅 장치들(510-j)은 각각 메시지 컴포넌트(534)를 갖는 몽타주애플리케이션(140) 및/또는 다양한 포맷의 다양한 타입의 메시지들을 전달하도록 배치된 하나 이상의 메시지 애플리케이션(542-k)을 구현할 수 있다. 일 실시예는 메시징 모델에 대한 메시지 애플리케이션들(542-k)을 참조하여 설명되지만, 이런 설명들은 몽타주 애플리케이션(140)의 메시지 컴포넌트(534)를 이용하는 다른 실시예들에 적용될 수 있다.
메시지 애플리케이션들(542-k) 각각은 특정 애플리케이션에 대한 특정 타입들 및 포맷들의 메시지들의 처리를 가능하게 하는 특정 종류의 트랜스포트를 나타낼 수 있다. 메시지 애플리케이션들(542-k)은 팩시밀리 애플리케이션, 비디오 메시지 애플리케이션, 인스턴트 메시징(IM) 애플리케이션, 챗(chat) 애플리케이션, 전자 메일(이메일) 애플리케이션, 단문 서비스(SMS) 애플리케이션, 멀티미디어 메시지 서비스(MMS) 애플리케이션, 소셜 네트워크 시스템(SNS) 애플리케이션 등을 포함할 수 있지만 이에 제한되지 않는다. 실시예들은 이와 관련하여 제한되지 않으며, 메시지 애플리케이션들(542-k)은 설명되는 실시예들에 적합한 임의의 다른 타입의 메시징 또는 통신 애플리케이션을 포함할 수 있음을 이해해야 한다. 또한 컴퓨팅 장치들(510-j) 각각은 설명되는 실시예들에 적합한 메시지 애플리케이션들(542-k)에 더하여 다른 타입의 애플리케이션들을 구현할 수도 있다는 점을 알아야 한다.
도 5에 도시된 바와 같이, 예를 들어, 컴퓨팅 장치들(510-1, 510-2)은 각각의 메시지 애플리케이션들(542-1, 542-2)을 구현한다. 메시지 애플리케이션들(542-1, 542-2)은 일반적으로 컴퓨팅 장치들(510-1, 510-2)에 대한 메시지들을 생성, 송신, 수신, 갱신, 수정 및 그 밖에 관리하도록 동작할 수 있다. 본원에서 설명되는 바와 같은 컴퓨팅 장치(510-1) 및 그 메시지 애플리케이션(542-1)에 대해 도시된 구현 세부 사항들은 컴퓨팅 장치(510-2) 및 그 각각의 메시지 애플리케이션(542-2)에도 적용된다는 것을 알 수 있다.
일 실시예에서, 메시지 애플리케이션들(542-1, 542-2)은, 네트워크 장치들 상에 구현되고 웹 브라우저를 통해 컴퓨팅 장치들(510-1, 510-2)에 의해 액세스되는 네트워크 기반 메시지 애플리케이션들이 아니라, 컴퓨팅 장치(510-1)의 프로세서(502) 및 메모리(504)와 같이, 컴퓨팅 장치들(510-1, 510-2)에 의해 제공되는 로컬 자원들에 의해 저장 및 실행되는 독립형 클라이언트 기반 애플리케이션들로써 구현된다. 일 실시예에서, 메시지 애플리케이션들(542-1, 542-2)은 분산 처리에 적합하고, 컴퓨팅 장치들(510-1, 510-2)에 대한 로컬 자원들 상에서 부분적으로 실행되고, 네트워크 자원들 상에서 부분적으로 실행되는 분산형 애플리케이션들을 포함할 수 있다. 추가적으로 또는 대안적으로, 메시지 애플리케이션들(542-1, 542-2)은 네트워크 장치들 상에 구현되고 웹 브라우저를 통해 컴퓨팅 장치들(510-1, 510-2)에 의해 액세스되는 네트워크 기반 메시지 애플리케이션들을 포함할 수 있다. 실시예들은 이에 제한되지 않는다.
일 실시예에서, 예를 들어, 메시지 애플리케이션(542-1)은 트랜스포트(512-2)를 통해 메시지(516)를 전달하도록 배열될 수 있다. 메시지(516)는 트랜스포트(512-2)를 통해 통신될 때 몽타주(120) 및/또는 하나 이상의 컨텐츠 파일(104-c)에 대한 하나 이상의 삽입된 링크(518-n) 및/또는 몽타주(120)를 포함할 수 있다. 하나 이상의 삽입된 링크(518-n)는, 예를 들어, 네트워크 저장 서버(550) 상에 저장되고 메시지 송신자 또는 메시지 수신자에 의해 액세스될 수 있는 바와 같은 몽타주(120) 및/또는 하나 이상의 컨텐츠 파일(104-c)에 대한 참조를 포함할 수 있다.
링크들(518-n) 각각은 사용자가 직접 따라갈 수 있거나, 프로그램에 의해 자동으로 추적되는 저장된 몽타주(120) 및 컨텐츠 파일들(104-c)에 대한 참조 또는 포인터를 포함할 수 있다. 참조들은 장치(예를 들어, 파일 서버)의 메모리 내의 다른 곳에서 참조 대상(referent)(예를 들어, 저장된 몽타주(120) 및 객체, 파일, 데이터 아이템 등과 같은 컨텐츠 파일(104-c))을 참조하는 데이터 타입들이며, 참조 대상에 액세스하는 데 사용된다. 일반적으로, 참조는 프로그램이 참조 대상에 직접 액세스 가능하게 해주는 값이다. 참조 대상은 참조와 동일한 장치 또는 참조와 상이한 장치 상에 저장될 수 있다. 대부분의 프로그래밍 언어들은 특정 형태의 참조를 지원한다. 링크들(518-n)에 대한 예는 월드 와이드 웹(WWW)에 의해 사용되는 것들과 같은 하이퍼텍스트 및 하이퍼링크들을 포함할 수 있지만 이에 제한되지 않는다. 하이퍼텍스트는 하이퍼링크들을 갖는 텍스트이다. 하이퍼링크는 통상적으로 하이퍼링크가 추적될 수 있는 메시지 내의 위치인 앵커를 포함한다. 하이퍼링크의 타겟은 하이퍼링크가 안내하는 저장된 몽타주(120) 및/또는 컨텐츠 파일(104-c)이다. 사용자는 (예를 들어, 터치 스크린 디스플레이를 사용하여) 링크를 터치하거나 포인팅 장치(예를 들어, 마우스)로 링크 위를 클릭하는 등의 특정 방식으로 링크를 활성화함으로써, 링크의 앵커가 나타날 때 링크를 추적할 수 있다. 링크(518-n)가 활성화될 때, 그 타겟이 웹 브라우저 또는 애플리케이션 프로그램을 통해 디스플레이된다.
전술한 바와 같이, 몽타주 애플리케이션(140)은 몽타주(120) 및 관련 컨텐츠 파일들(104-c)을 네트워크 저장 서버(550)의 원격 데이터 저장소(212)로 발행함으로써 발행 모델 및 메시징 모델 양자의 혼합을 사용하고, 몽타주(120) 및 관련 컨텐츠 파일들(104-c)의 네트워크 버전들에 대한 링크들(518-n)을 수신하고, 링크들(518-n)을 갖는 메시지(516)를 전송할 수 있다. 컨텐츠 소비자들은 메시지(516)에 액세스하고, 링크(518-n)를 선택하고, 몽타주(120)의 네트워크 버전을 볼 수 있다. 또한, 컨텐츠 소비자들은 몽타주(120)의 타일 객체(126-e)를 선택하여, 선택된 타일 객체(126-e)와 관련된 컨텐츠 파일(104-c)의 네트워크 버전을 볼 수 있다. 이러한 혼합 모델은 도 6을 참조하여 보다 상세히 설명될 수 있다.
도 6은 메시징 시스템(500)에 대한 메시지 흐름의 일 실시예를 도시한다. 도 6에 도시된 바와 같이, 발행 컴포넌트(532)는 몽타주(120) 및 관련 컨텐츠 파일들(104-c)을 네트워크 서비스(652)로 발행할 수 있다. 발행 컴포넌트(532)는 화살표(602)로 표시되는 바와 같이 몽타주(120) 및 관련 컨텐츠 파일들(104-c)을 트랜스포트(512-1)를 통해 네트워크 저장 서버(550)로 전송할 수 있다. 고속 트랜스포트인 트랜스포트(512-1)는, 예를 들어, 메시지(516)에 대한 메시지 크기와 관련하여, 컨텐츠 파일들(104-c)과 통상적으로 관련된 더 큰 파일 크기를 전송하는 데 충분한 대역폭을 가질 수 있다.
네트워크 저장 서버(550)는 몽타주(120) 및 관련 컨텐츠 파일들(104-c)을 수신하고, 이들을 원격 데이터 저장소(212)에 저장할 수 있다. 이어서, 네트워크 저장 서버(550)는 화살표(604)로 표시되는 바와 같이 원격 데이터 저장소(212)에 저장된 바와 같은 몽타주(120) 및 컨텐츠 파일들(104-c)에 대한 링크들(518-n)을 전송할 수 있다.
발행 컴포넌트(532)는 링크들(518-n)을 수신하고, 링크들을 작성 컴포넌트(110)로 전송할 수 있다. 작성 컴포넌트(110)는 링크(518-n)를 각각의 타일 객체(126-e)에 연계시키고, 이 연관들을 사용하여 몽타주(120)를 갱신할 수 있으므로, 컨텐츠 소비자는 타일 객체(126-e)를 선택하고, 컨텐츠 파일(104-c)의 더 심도 있는 관찰을 위해 원격 데이터 저장소(212)의 관련 컨텐츠 파일(104-c)에 액세스할 수 있다.
일 실시예에서, 발행 모델과 일관되게, 작성 컴포넌트(110)는 갱신된 몽타주(120)를 발행 컴포넌트(532)로 전송할 수 있다. 이어서, 발행 컴포넌트(532)는 화살표(606)로 표시되는 바와 같이 갱신된 몽타주(120) 및 링크들(518-n)을 네트워크 서비스(652) 상에서 발행할 수 있다. 예를 들어, 네트워크 서비스(652)는 소셜 네트워킹 서비스(SNS)를 포함할 수 있으며, 컨텐츠 생성자(예를 들어, 친구)와의 정의된 관계를 갖는 컨텐츠 소비자들은 발행된 링크들(518-n)을 통해 몽타주(120) 및 관련 컨텐츠 파일들(104-c)에 액세스할 수 있다. 다른 예에서, 네트워크 서비스(652)는 컨텐츠 생성자에게 계정을 제공할 수 있으며, 이는 네트워크 서비스(652) 및/또는 보안 컴포넌트(536)에 대해 설정된 허가들에 따라 컨텐츠 소비자들이 관찰하게 할 수 있다. 컨텐츠 소비자는 화살표(610)로 표시되는 바와 같이 컴퓨팅 장치(510-2)를 통해 네트워크 서비스(652)에 액세스하고, 웹 브라우저를 통해 몽타주(120)에 대한 파일에 대한 링크(518-n)를 선택하고, 원격 데이터 저장소(212)로부터 몽타주(120)를 요청할 수 있다. 네트워크 서비스(652)는 화살표(612)로 표시되는 바와 같이 요청을 수신하고, 몽타주(120)를 컴퓨팅 장치(510-2)로 전송할 수 있다. 컴퓨팅 장치(510-2)는 몽타주(120)를 프레젠테이션 타일들(124-a) 내에 타일 객체들(126-e)을 갖는 프레젠테이션 표면(122)의 사용자 인터페이스 뷰로써 제공할 수 있다. 컴퓨팅 장치(510-2)는 웹 브라우저에서의 웹페이지로써, 또는 몽타주 애플리케이션(140) 또는 몽타주(120)를 관찰하도록 설계된 몽타주 뷰어와 같은 애플리케이션 프로그램의 사용자 인터페이스 뷰로써 사용자 인터페이스 뷰를 생성할 수 있다.
일 실시예에서, 메시징 모델과 일관되게, 작성 컴포넌트(110)는 갱신된 몽타주(120) 및 링크들(518-n)을 메시지 컴포넌트(534)(또는 메시지 애플리케이션(542-1))로 전송할 수 있다. 메시지 컴포넌트(534)는 링크들(518-n) 및 메시지 컨텐츠(620)를 입력들로서 수신할 수 있다. 메시지 컨텐츠(620)는 컨텐츠 생성자로부터의 메시지를 포함할 수 있다. 메시지 컴포넌트(534)는 메시지 컨텐츠(620) 및 링크들(518-n)을 갖는 메시지(516)를 생성할 수 있다. 추가적으로 또는 대안적으로, 메시지(516)는 메시지 트랜스포트(512-2)에 대한 파일 크기 제한 및 가용 대역폭에 따라 몽타주(120) 및/또는 특정 컨텐츠 파일들(104-c)을 선택적으로 포함할 수 있다. 몽타주(120)는 몽타주(120)의 최고 충실도 버전, 또는 몽타주(120)의 섬네일 버전과 같이 트랜스포트(512-2)의 가용 대역폭에 더 적합한 몽타주(120)의 더 낮은 충실도 버전을 포함할 수 있다.
메시지 컴포넌트(534)는 화살표(608)로 표시되는 바와 같이 트랜스포트(512-2)를 통해 메시지 서버(540)를 경유하여 컴퓨팅 장치(510-2)의 메시지 애플리케이션(542-2)으로 메시지(516)를 전송할 수 있다. 컨텐츠 소비자는 화살표(610)로 표시되는 바와 같이 메시지(516)를 열고, 몽타주(120)에 대한 링크(518-n)를 선택하고, 원격 데이터 저장소(212)로부터 몽타주(120)를 요청할 수 있다. 네트워크 서비스(652)는 화살표(612)로 표시되는 바와 같이 요청을 수신하고, 컴퓨팅 장치(510-2)로 몽타주(120)를 전송할 수 있다. 컴퓨팅 장치(510-2)는 몽타주(120)를 프레젠테이션 타일들(124-a) 내에 타일 객체들(126-e)을 갖는 프레젠테이션 표면(122)의 사용자 인터페이스 뷰로써 제공할 수 있다. 컴퓨팅 장치(510-2)는 웹 브라우저에서의 페이지로써, 또는 몽타주 애플리케이션(140) 또는 몽타주(120)를 관찰하도록 설계된 몽타주 뷰어와 같은 애플리케이션 프로그램의 사용자 인터페이스 뷰로써 사용자 인터페이스 뷰를 생성할 수 있다.
도 7a는 예시적인 메시지(516)의 사용자 인터페이스 뷰(700)의 일 실시예를 도시한다. 도 6을 참조하여 설명된 바와 같이, 컨텐츠 생성자는 몽타주 애플리케이션(140) 및/또는 메시징 애플리케이션(542-1)을 사용하여, 몽타주(120) 또는 몽타주(120)에 대한 참조를 갖는 메시지(516)를 생성 및 전송할 수 있다. 컨텐츠 소비자는 컴퓨팅 장치(510-2) 및 메시징 애플리케이션(542-2)을 통해 메시지(516)를 수신할 수 있다. 사용자 인터페이스 뷰(700)는 이메일 메시지로 구현된 메시지(516)에 관한 예를 제공한다.
메시지(516)는 특히 답장(Reply) 버튼, 전체 답장(Reply to All) 버튼, 전달(Forward) 버튼, 삭제(Delete) 버튼, 폴더로 이동(Move to Folder) 버튼 및 규칙 생성(Create Rule) 버튼과 같은 이메일에 대한 다양한 명령 요소들을 갖는 리본 바(702)를 포함할 수 있다. 메시지(516)는 어드레싱 정보를 갖는 어드레스 바(704) 및 메시지 본문(706)을 더 포함할 수 있다. 메시지 본문(706)은 원격 데이터 저장소(212)에 저장되는 바와 같은 몽타주 파일 섬네일(720) 및 몽타주(120)에 대한 링크(518-1)를 갖는 표면을 포함할 수 있다. 몽타주 파일 섬네일(720)은 몽타주(120)의 더 낮은 충실도 버전을 포함할 수 있다.
컨텐츠 소비자는, 예를 들어, 포인팅 장치(710)와 같은 입력 장치를 사용하여 몽타주 섬네일(720)을 선택할 수 있다. 컨텐츠 소비자는 또한, 예를 들어, 터치 스크린 디스플레이 상의 제스처(712)와 같은 입력 장치를 사용하여 "학급 여행(Student Class Trip)"이라는 제목의 링크(518-1)를 선택할 수 있다. 이런 두 가지 경우에서, 선택은 몽타주(120)를 보기 위한 웹 브라우저 또는 애플리케이션 프로그램을 런칭한다.
도 7b는 메시지(516)로부터 런칭된 몽타주(120)의 사용자 인터페이스 뷰(740)의 일 실시예를 도시한다. 컴퓨팅 장치(510-2)의 특정 구현에 따라, 컴퓨팅 장치(510-2)는 웹 브라우저에서의 웹페이지로써, 또는 몽타주 애플리케이션(140) 또는 몽타주(120)를 보도록 구체적으로 설계된 몽타주 뷰어(730)와 같은 애플리케이션 프로그램의 사용자 인터페이스 뷰로써 사용자 인터페이스 뷰(740)를 생성할 수 있다. 예를 들어, 컴퓨팅 장치(510-2)를 위해 구현된 몽타주 애플리케이션(140)의 프레젠테이션 컴포넌트(130) 및/또는 몽타주 뷰어(730)는 몽타주(120)를 열기 위한 제어 명령어를 수신하고, 원격 데이터 저장소(212)로부터 몽타주(120)를 검색하기 위한 동작들을 개시할 수 있다. 프레젠테이션 컴포넌트(130) 및/또는 몽타주 뷰어(730)는 적절한 프레젠테이션 타일들(124-a) 내에 타일 객체들(126-e)을 갖는 프레젠테이션 표면(122)을 포함하는 몽타주(120)의 사용자 인터페이스 뷰(740)를 제공할 수 있다.
웹페이지로써 렌더링될 때, 프레젠테이션 컴포넌트(130)는 하이퍼텍스트 마크업 언어(HTML)나 또는 유사한 코드와 같이, 웹페이지에 대해 구체적으로 설계된 코드를 사용할 수 있다. 그러나, HTML 코드는 클라이언트 장치(510-2)에 의해 구현되는 특정 타입의 웹 브라우저에 의해 제한될 수 있다. 몽타주 뷰어(730)에 대한 사용자 인터페이스 뷰로써 렌더링될 때, 프레젠테이션 컴포넌트(130) 및/또는 몽타주 뷰어(730)는 몽타주 뷰어(730)에 대해 최적화된 코드를 사용할 수 있다. 예를 들어, 몽타주(120)는 웹페이지에 대한 HTML 코드를 사용하여 생성될 수 있으며, 확장형 마크업 언어(XML) 코드가 HTML 코드 내에 내장될 수 있다. XML 코드는 몽타주 애플리케이션(140) 또는 몽타주 뷰어(730)에 대해 구체적으로 설계된 데이터 스키마를 사용하여 생성될 수 있다. 따라서, 몽타주 애플리케이션(140) 또는 몽타주 뷰어(730)는 웹페이지에서 사용되는 몽타주(120)의 더 낮은 충실도 버전에 비해 몽타주(120)의 더 높은 충실도 버전을 렌더링할 수 있다.
도 7c는 몽타주 뷰어(730) 내에 제공되는 바와 같은 몽타주(120)의 일례의 사용자 인터페이스 뷰(750)의 일 실시예를 도시한다. 도 7b을 참조하여 설명된 바와 같이, 몽타주 뷰어(730)는 적절한 프레젠테이션 타일들(124-a) 내에 타일 객체들(126-e)을 갖는 프레젠테이션 표면(122)을 포함하는 몽타주(120)의 사용자 인터페이스 뷰(740)를 제공할 수 있다. 프레젠테이션 표면(122)은 도 4를 참조하여 설명된 바와 같은 컨텐츠 파일(104-1)에 대한 타일 객체(126-1)를 포함하는 것으로 가정한다.
컨텐츠 소비자는, 예를 들어, 포인팅 장치(710)와 같은 입력 장치를 사용하여 타일 객체(126-1)를 선택할 수 있다. 컴퓨팅 장치(510-2)를 위해 구현되는 몽타주 애플리케이션(140)의 프레젠테이션 컴포넌트(130) 및/또는 몽타주 뷰어(730)는 타일 객체(126-1)를 선택하는 제어 명령어를 수신하고, 원격 데이터 저장소(212)로부터 타일 객체(126-1)에 대한 컨텐츠 파일(104-1)을 검색한다.
도 7d는 몽타주(120)로부터 런칭된 컨텐츠 파일(104-1)의 사용자 인터페이스 뷰(760)의 일 실시예를 도시한다. 프레젠테이션 컴포넌트(130) 및/또는 몽타주 뷰어(730)는 원격 데이터 저장소(212)로부터 검색된 컨텐츠 파일(104-1)의 최고 충실도 버전을 갖는 사용자 인터페이스 뷰(760)를 제공할 수 있다. 대안으로, 컨텐츠 파일(104-1)은 컨텐츠 파일(104-1)을 생성하는 데 사용되는 것과 유사한 고유 애플리케이션 프로그램, 또는 이런 애플리케이션 프로그램을 위해 구체적으로 설계된 뷰어를 사용하여 렌더링될 수 있다. 실시예들은 이에 제한되지 않는다.
다양한 실시예들에서, 프레젠테이션 컴포넌트(130)는 상이한 크기, 해상도, 리프레시 레이트, 백라이팅, 전력 소비 등과 같은 상이한 특성들을 갖는 디스플레이들 상에서 보기 위하여 몽타주(120)를 동적으로 생성할 수 있다. 이런 예시들에서, 프레젠테이션 컴포넌트(130)는 디스플레이의 디스플레이 특성들을 검출하고, 디스플레이 상의 프레젠테이션을 위해 몽타주(120)를 수정하도록 배열될 수 있다. 예를 들어, 프레젠테이션 컴포넌트(130)는 많은 회의실에서 발견되는 바와 같은 터치 제어들을 갖는 대형 벽 디스플레이 상에 제공될 때 더 많은 수의 프레젠테이션 타일(124-a) 및 타일 객체(126-e)를 갖는 몽타주(120)의 훨씬 더 큰 버전을 생성할 수 있다. 한편, 프레젠테이션 컴포넌트(130)는 스마트 폰 상에 제공될 때 더 적은 수의 프레젠테이션 타일(124-a) 및 타일 객체(126-e)를 갖는 몽타주(120)의 더 작은 버전을 생성할 수 있다. 유사하게, 프레젠테이션 컴포넌트(130)는 주어진 디스플레이의 스크린 해상도 또는 픽셀 크기에 기반하여 상이한 충실도 레벨들을 갖는 몽타주(120)를 생성할 수 있다. 다른 예에서, 프레젠테이션 컴포넌트(130)는, 사용자가 스마트 폰이나 태블릿을 회전시킬 때와 같이, 세로 모드(portrait mode)에 있을 때 몽타주(120)의 한 버전을 생성하고, 파노라마 모드에 있을 때 몽타주(120)의 다른 버전을 생성할 수 있다. 실시예들은 이에 제한되지 않는다.
전술한 실시예들에 대한 동작들은 하나 이상의 논리 흐름을 참조하여 추가적으로 설명될 수 있다. 대표적인 논리 흐름들은 달리 지시되지 않는 한 제시된 순서대로 또는 임의의 특정 순서로 실행될 필요가 없음을 알 수 있다. 또한, 논리 흐름들과 관련하여 설명되는 다양한 활동들은 순차 또는 병행 방식으로 실행될 수 있다. 논리 흐름들은 설명되는 실시예들의 하나 이상의 하드웨어 요소 및/또는 소프트웨어 요소, 또는 주어진 세트의 설계 및 성능 제약들에서 필요한 대로 대안 요소들을 사용하여 구현될 수 있다. 예를 들어, 논리 흐름들은 논리 장치(예를 들어, 범용 또는 특수 목적 컴퓨터)에 의한 실행을 위한 논리(예를 들어, 컴퓨터 프로그램 명령어들)로 구현될 수 있다.
도 8은 논리 흐름(800)의 일 실시예를 도시한다. 논리 흐름(800)은 몽타주 애플리케이션(140)의 작성 컴포넌트(110)와 같이, 본원에서 설명되는 하나 이상의 실시예에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다.
도 8에 도시된 실시예에서, 논리 흐름(800)은 블록(802)에서 다수의 프레젠테이션 타일을 갖는 프레젠테이션 표면을 제공할 수 있다. 예를 들어, 작성 컴포넌트(110)는 사용자 인터페이스(538)를 통해 다수의 프레젠테이션 타일(124-a)을 갖는 프레젠테이션 표면(122)을 제공할 수 있다. 프레젠테이션 표면(122)은 다수의 몽타주 템플릿 중에서 선택되거나, 컨텐츠 생성자에 의해 맞춤 설계될 수 있다.
논리 흐름(800)은 블록(804)에서 컨텐츠 파일을 프레젠테이션 타일과 연계시키는 제어 명령어를 수신할 수 있다. 예를 들어, 작성 컴포넌트(110)는 컨텐츠 파일(104-c)을 프레젠테이션 타일(124-a)과 연계시키는 제어 명령어(102-b)를 수신할 수 있다. 제어 명령어(102-b)는 컨텐츠 생성자에 의한 명령을 표현하는 입력 장치로부터 수신될 수 있다.
논리 흐름(800)은 블록(806)에서 컨텐츠 파일에 대한 컨텐츠 파일 타입을 식별할 수 있다. 예를 들어, 작성 컴포넌트(110)는 컨텐츠 파일(104-c)에 대한 컨텐츠 파일 타입을 식별할 수 있다. 식별은 컨텐츠 파일(104-c)의 파일 확장자, 컨텐츠 파일(104-c)에 대한 메타데이터, 컨텐츠 파일(104-c) 내의 정보의 분석, 컨텐츠 파일(104-c)을 생성하는 데 사용되는 애플리케이션 프로그램에 대한 정보 등을 검사함으로써 수행될 수 있다.
논리 흐름(800)은 블록(808)에서 컨텐츠 파일 타입에 기반하여 컨텐츠 파일로부터 컨텐츠의 부분을 검색할 수 있다. 예를 들어, 작성 컴포넌트(110)는 컨텐츠 파일 타입에 기반하여 타입 모듈(202-g)을 선택하고, 선택된 타입 모듈(202-g)을 사용하여, 컨텐츠 파일(104-c)에 대해 발견된 컨텐츠 파일 타입과 관련된 타입 정의(204-h)에 따라 컨텐츠 파일(104-c)로부터 적절한 컨텐츠 부분(106-d)을 검색할 수 있다. 일 실시예에서, 컨텐츠 파일(104-c)은 로컬 데이터 저장소(210)에 저장될 수 있으며, 컨텐츠 부분(106-d)은 파일 탐색 도구(304)를 사용하여 데이터 버스를 통해 검색될 수 있다. 일 실시예에서, 컨텐츠 파일(104-c)은 원격 데이터 저장소(212)에 저장될 수 있으며, 컨텐츠 부분(106-d)은 파일 탐색 도구(304)를 사용하여 네트워크를 통해 검색될 수 있다.
논리 흐름(800)은 블록(810)에서 컨텐츠 부분에 기반하여 타일 객체를 생성할 수 있다. 예를 들어, 작성 컴포넌트(110)는 선택된 타입 모듈(202-g)을 사용하여, 관련 타입 정의(204-h)에 따라 검색된 컨텐츠 부분(106-d)으로부터 타일 객체(126-e)를 생성할 수 있다. 타일 객체(126-e)는 프레젠테이션 타일(124-a) 내에 제공될 수 있다. 타일 객체(126-e)는 기초 컨텐츠 파일(104-c)에 대한 충분한 정보를 제공하여, 컨텐츠 소비자로 하여금 자신이 컨텐츠 파일((104-c)의 최고 충실도 뷰를 보고 싶어 하는지를 결정할 수 있게 설계된다.
논리 흐름(800)은 블록(812)에서 프레젠테이션 표면 및 타일 객체를 몽타주로써 저장할 수 있다. 예를 들어, 작성 컴포넌트(110)는 프레젠테이션 표면(122) 및 임의의 타일 객체들(126-e)을 몽타주(120)로써 저장할 수 있다. 이어서, 몽타주(120)는, 예를 들어, 메시징 시스템(500)을 사용하여 다양한 컨텐츠 소비자들에 의해 배포, 발행 및 소비될 수 있다.
도 9는 논리 흐름(900)의 일 실시예를 도시한다. 논리 흐름(900)은 몽타주 애플리케이션(140)의 프레젠테이션 컴포넌트(130)와 같이, 본원에서 설명되는 하나 이상의 실시예에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다.
도 9에 도시된 실시예에서, 논리 흐름(900)은 블록(902)에서 대응 컨텐츠 파일에 대한 타일 객체를 각각 갖고 있는 다수의 프레젠테이션 타일이 있는 프레젠테이션 표면을 포함하는 몽타주를 생성할 수 있다. 예를 들어, 프레젠테이션 컴포넌트(130)는 대응하는 컨텐츠 파일(104-c)에 대한 타일 객체(126-e)를 각각 갖고 있는 다수의 프레젠테이션 타일(124-a)이 있는 프레젠테이션 표면(122)을 포함하는 몽타주(120)를 생성할 수 있다.
논리 흐름(900)은 블록(904)에서 몽타주 및 컨텐츠 파일들을 네트워크 서비스에 전송할 수 있다. 예를 들어, 몽타주 애플리케이션(140)의 발행 컴포넌트(532)는 네트워크 서비스(652)를 통해 액세스 가능한 원격 데이터 저장소(212)에 의한 저장을 위해 몽타주(120) 및 관련 컨텐츠 파일들(104-c)을 네트워크 저장 서버(550)로 전송할 수 있다.
논리 흐름(900)은 블록(906)에서 몽타주 및 각각의 컨텐츠 파일에 대한 참조들을 수신할 수 있다. 예를 들어, 발행 컴포넌트(532)는 몽타주(120) 및 각각의 컨텐츠 파일(104-c)에 대한 링크들(518-n)을 수신할 수 있다. 링크들(518-n)은 원격 데이터 저장소(212) 상에 저장되는 바와 같은 몽타주(120) 및 각각의 컨텐츠 파일(104-c)의 네트워크 버전들에 대한 참조들 또는 포인터들을 포함할 수 있다.
논리 흐름(900)은 블록(908)에서 컨텐츠 파일에 대한 참조를 대응하는 타일 객체에 연계시킬 수 있다. 예를 들어, 발행 컴포넌트(532)는 검색된 링크들(518-n)을 작성 컴포넌트(110)로 전송할 수 있다. 작성 컴포넌트(110)는 컨텐츠 파일(104-c)에 대한 링크(518-n)를 대응하는 타일 객체(126-e)에 연계시킬 수 있다. 컨텐츠 소비자가 타일 객체(126-e)를 선택할 때, 프레젠테이션 컴포넌트(130)는 관련 링크(518-n)를 통해 타일 객체(126-e)와 관련된 컨텐츠 파일(104-c)을 검색할 수 있다.
도 10은 몽타주 애플리케이션(1000)의 일 실시예를 도시한다. 몽타주 애플리케이션(1000)은 몽타주 애플리케이션(140)의 대표적인 예시일 수 있다. 몽타주 애플리케이션(140)과 관련하여 전술한 기능들의 일부 또는 전부에 더하여, 몽타주 애플리케이션(1000)은 본원에 설명된 기능을 제공하기 위한 하나 이상의 컴포넌트나 모듈을 포함할 수 있다. 일 실시예에서, 예를 들어, 몽타주 애플리케이션(1000)은 프레젠테이션 각각 컴포넌트(130)과 작성 컴포넌트(110)의 대표적인 예시일 수 있는 프레젠테이션 컴포넌트(1010)과 작성 컴포넌트(1020)를 포함할 수 있다. 실시예들은 도 10에 도시된 컴포넌트들의 타입, 개수 또는 배열에 제한되지 않는다.
배경 기술로, 몽타주는, 예를 들어, 몽타주 파일의 몽타주 디자이너가 지정한 대로 원본 레이아웃을 갖고 있을 수 있다. 몽타주는 하나 이상의 순서화된 타일을 포함할 수 있다. 각각의 타일의 크기가 정의된다. 예를 들어, 순서화(ordering)는 몽타주에서 타일들이 생성된 순서, 몽타주에서 타일들이 배치된 순서 또는 몽타주의 위치에 따라 작성 컴포넌트(1020)가 부여한 순서를 반영할 수 있다. 프레젠테이션 표면은, 예를 들어, 수평인 패닝(panning) 방향에 의해 정의된 차원, 및 패닝 방향과 직교하는, 예를 들어, 수직인 차원 등의 여러 차원을 포함할 수 있다. 일 실시예에서, 패닝 방향과 직교하는 차원의 크기가 고정되어 패닝하지 못할 수 있다. 패닝 방향과 직교하는 차원은 본원에서 “고정 차원”이라고 지칭할 수 있다. 이차원에서, 프레젠테이션 표면은 열과 행의 그리드를 포함할 수 있다. 그리드에서의 몽타주 타일들의 위치가 정의된다. 몽타주 타일들은 순서화에서 이전 타일에 관련된 공간 특성을 갖고 있을 수 있다. 이차원적인 시스템에서, 예를 들어, 제 1 방향, 제 2 방향 및 제 3 방향이 있을 수 있다. 예를 들어, 수평 패닝 방향을 갖는 몽타주에서, 타일이 이전 타일 아래에 있는 경우, 이전 타일에 관련된 제 1 방향인 “아래쪽” 공간 특성을 갖고 있을 수 있다. 다른 공간 특성은, 타일이 그 이전 타일의 오른쪽에 있을 때 제 2 방향인 “오른쪽”을 포함하고, 타일이 그 이전 타일의 위에 그리고 오른쪽에 있을 때 제 3 방향인 “오른쪽 위”을 포함할 수 있다.
프레젠테이션 컴포넌트(1010)는 프레젠테이션 표면에 디스플레이하기 위한 몽타주를 수신할 수 있다. 프레젠테이션 컴포넌트(1010)는 원본 레이아웃인 몽타주가 고정 차원의 이용 가능한 디스플레이에 맞을지 여부를 결정할 수 있다. 몽타주가 맞지 않으면, 프레젠테이션 컴포넌트(1010)는 타일들의 서로에 대한 공간 특성을 보존하도록 타일들을 스케일링하고, 이용 가능한 디스플레이에 그 타일들을 재배치하거나, 또는 스케일링과 재배치의 일부 조합을 실행할 수 있다.
프레젠테이션 컴포넌트(1010)는 설명된 기능을 제공하기 위해 그 자체에 하나 이상의 컴포넌트 또는 모듈을 포함할 수 있다. 일 실시예에서, 예를 들어, 프레젠테이션 컴포넌트(1010)는 타일 리플로우 모듈(1012)과 타일 밸런싱 모듈(1014)을 포함할 수 있다. 프레젠테이션 컴포넌트(1010)는 프레젠테이션 표면 사양(presentation surface specification)(1016)도 포함할 수 있다. 프레젠테이션 표면 사양(1016)은 프레젠테이션 표면, 예를 들어, 프레젠테이션 표면(122)의 차원들을 포함할 수 있다. 프레젠테이션 표면 사양(1016)은 몽타주의 원본 레이아웃을 설계할 때 프레젠테이션 표면의 차원들을 포함할 수 있다. 이에 더해서, 또는 그 대신에, 프레젠테이션 표면 사양(1016)은 원본 프레젠테이션 표면과 다를 수 있는, 몽타주가 디스플레이되는 프레젠테이션 표면의 차원들을 포함할 수 있다.
몽타주 타일들이 재배치, 즉, 본원에서는 “리플로우”라고도 하는 동작이 필요할 때, 타일 리플로우 모듈(1012)은 몽타주의 타일들의 공간 특성을 결정할 수 있다. 타일 리플로우 모듈(1012)은, 가능한 한 타일들의 공간 특성을 보존하면서, 타일들이 고정 차원에 맞도록 타일들을 재분배할 수 있다. 따라서, 리플로우는 어느 하나의 차원에서 패닝을 보존할 수 있다. 예를 들어, “아래쪽” 타일이 그 이전 타일 아래에 맞지 않는 경우, 타일 리플로우 모듈(1012)은 이전 타일의 오른쪽에 있는 이용 가능한 다음 열의 위로 그 타일을 이동시킬 수 있다. 다른 예시들은 도 16과 관련하여 추가적으로 설명된다.
모든 타일들이 리플로우되면, 타일 밸런싱 모듈(1014)은 비어 있는 열이나 행을 제거하고, 고정 차원에서 타일들을 재분배하여 타일들 위와 아래의 빈 공간의 균형을 맞출 수 있다.
작성 컴포넌트(1020)는, 전술한 다른 기능들에 더하여, 하나 이상의 타일들이 추가되거나 삭제될 때 몽타주에서 타일들을 자동으로 재배치하는 제거 리플로우 모듈(130)도 포함할 수 있다. 리플로우 동작은 몽타주의 프레젠테이션 표면에서 미사용 공간을 최소화시킬 수 있다. 제거 리플로우 모듈(1022)은 남아 있는 타일들의 공간 특성을 보존하면서 삭제된 타일에 의해 생긴 빈 공간으로 남아 있는 타일들을 “밀어 넣을(push)” 수 있다. 제거 리플로우 동작의 일례가 도 19와 관련하여 아래에서 설명된다.
도 11은 원본 몽타주(1110)를 갖는 프레젠테이션 표면(1102)의 일례(1100)를 도시한다. 프레젠테이션 표면(1102)은 몽타주가 제공되는 사용자 인터페이스 창 또는 디스플레이의 차원들에 대응하는 뷰 포트(1104)를 포함할 수 있다. 또한, 프레젠테이션 표면(1102)은 패닝 방향(1106)도 갖고 있다. 본원에서 도시되고 설명된 예시들은 수평 패닝 방향 및 수직 고정 차원을 사용하지만, 설명된 동작들은 수직 패닝 방향 및 수평 고정 차원을 갖고 있는 프레젠테이션 표면에도 유사하게 적용될 수 있다. 프레젠테이션 표면(1102)은 7 개의 그리드 블록들의 고정 차원과 12 개의 그리드 블록들의 패닝 방향 차원을 갖고 있다. 프레젠테이션 표면(1102)은, 예를 들어, 사용자가 무심코 프레젠테이션 타일을 선택하지 않으면서 패닝하도록 터치 인터페이스 상에 패닝 부분을 제공하기 위해서, 그 둘레에 미사용 블록들의 “거터(gutter)”를 포함할 수 있다.
몽타주(1110)는 본원에서 줄여서 타일들(1 내지 10)이라고 하는 10 개의 프레젠테이션 타일들(1110-1에서 1110-10)을 포함할 수 있다. 타일들(1-10)은 다음의 공간 특성을 갖고 있다:
타일(1)은 첫 번째 타일이며 프레젠테이션 표면의 기점(origin)에 위치하고 있다. 프레젠테이션 표면(1102)의 기점은 왼쪽 맨 위(top left)에 있지만, 다른 프레젠테이션 표면들은 다른 코너에 기점을 가질 수 있다. 타일(1)은 공간 특성이 없다.
타일(2)은 타일(1)의 “아래쪽”에 있다.
타일(3)은 타일(2)의 “아래쪽”에 있다.
타일(4)은 타일(3)의 “아래쪽”에 있다.
타일(5)은 타일(4)의 “오른쪽 위(up and right)”에 있다.
타일(6)은 타일(5)의 “아래쪽”에 있다.
타일(7)은 타일(6)의 “오른쪽”에 있다.
타일(8)은 타일(7)의 “오른쪽 위”에 있다.
타일(9)은 타일(8)의 “아래쪽”에 있다.
타일(10)은 타일(9)의 “아래쪽”에 있다.
일 실시예에서, 공간 특성 “오른쪽” 및 “오른쪽 위”은 타일의 가장 왼쪽(선두(leading)) 에지가 이전 타일의 선두 에지로부터 오른쪽으로 얼마나 많은 그리드 블록들만큼 떨어져 있는지를 나타내는 오프셋을 포함할 수 있다. 예를 들어, 타일(5)은 타일(4)로부터 2 개의 그리드 블록만큼 오프셋되고, 타일(7)은 타일(6)로부터 2 개만큼 오프셋되고, 타일(8)은 타일(7)로부터 2 개만큼 오프셋된다.
도 12는 프레젠테이션 표면(1102)과 다른 차원들을 갖는 프레젠테이션 표면(1202)의 일례(1200)를 도시한다. 특히, 프레젠테이션 표면(1202)은 6 개의 그리드 블록들의 고정 차원을 갖고 있다. 프레젠테이션 표면(1202)은 프레젠테이션 표면(1202)의 고정 차원을 반영하는 뷰 포트(1204)를 갖고 있다. 예시(1200)는 몽타주(1110)가 프레젠테이션 표면(1202)에 그 원본 레이아웃으로 디스플레이되는 경우 어떤 일이 일어날 수 있는지를 도시한다. 타일들(3,4 및 10)의 아래 절반이 잘려져 보이지 않게 되고, 이는 바람직하지 못한 결과일 수 있다. 몇몇 실시예에서, 프레젠테이션 컴포넌트(1010)는 더 작은 프레젠테이션 표면 안에 타일들이 들어맞게 하기 위해 타일들을 스케일링할 수 있다. 그러나, 경우에 따라서는, 타일들이 들어맞도록 스케일링한 결과 텍스트와 이미지들이 너무 작아서 읽거나 볼 수 없게 될 수 있다. 이런 경우에, 타일들을 리플로우하는 것이 바람직할 수 있다.
도 13은, 예를 들어, 타일 리플로우 모듈(1012)에 의해 몽타주(1110)가 리플로우된 후의 프레젠테이션 표면(1302)의 일례(1300)를 도시한다. 프레젠테이션 표면(1302)은 6 개의 그리드 블록들의 고정 차원을 갖고 있다. 프레젠테이션 표면(1302)은 프레젠테이션 표면(1302)의 고정 차원을 반영하는 뷰 포트(1304)를 갖고 있다. 리플로우를 실행하는 예시적인 방법이 도 16에서 설명된다.
요약하면, 타일(2)은 타일(1)의 아래쪽에 있고, 타일(1)의 아래 공간에 맞는다. 타일(3)은 타일(2)의 아래쪽에 있지만, 맞지 않는다. 따라서 타일(3)은 타일(2)의 오른쪽에 이용 가능한 다음 공간에 배치되고, 이는 타일(1)의 오른쪽이다. 타일(4)은 타일(3)의 오른쪽에 있고, 타일(3)의 오른쪽에 배치된다. 타일(5)은 타일(4)의 오른쪽 위에 있고, 2 개만큼 오프셋된다. 타일(5)은 타일(4)의 선두 에지와 정렬되고 그 오프셋만큼 오른쪽으로 이동하지만, 그 위치는 타일(4)과 중첩되기 때문에, 타일(5)은 타일(4) 아래로 이동하게 된다. 타일(6)은 타일(5)의 아래쪽에 있지만, 그 아래에 맞지 않는다. 따라서, 타일(6)은 타일(5)의 오른쪽에 이용 가능한 다음 공간에 배치되고, 이는 타일(4)의 오른쪽 옆이다. 타일(7)은 타일(6)의 오른쪽에 있으며, 타일(6)의 오른쪽에 배치된다. 타일(8)은 타일(7)의 오른쪽 위에 있으며, 2 개만큼 오프셋된다. 타일(8)은 타일(7)의 선두 에지와 정렬되고 오른쪽으로 이동한다. 타일(8)은 그 위치에서 타일(7)과 중첩되지 않으므로 그 곳에 배치된다. 타일(9)은 타일(8)의 아래쪽에 있으며 타일(8)의 아래에 맞으므로 그 곳에 배치된다. 타일(10)은 타일(9)의 아래쪽에 있지만 맞지 않으므로, 타일(9)의 오른쪽에 이용 가능한 다음 공간에 배치되고, 이는 타일(8)의 오른쪽 옆이다. 일 실시예에서, 패닝 방향과 관련해서 공간 특성을 보존하는 것이 고정 차원에서의 패킹(packing)보다 우선한다. 따라서, 예시(1300)는 빈 공간을 최소화시키기 위해 수직 방향으로 조밀하게 패킹되지는 않으며, 대신에 “오른쪽” 및 “오른쪽 위” 공간 특성을 가능한 한 많이 보존한다.
도 14a는, 예를 들어, 타일 밸런싱 모듈(1014)에 의해 프레젠테이션 표면(1302) 상에 균형이 맞춰지는 과정에서 리플로우된 몽타주(1110)의 일례를 도시한다. 타일 밸런싱 모듈(1014)은 리플로우 결과 비어 있는 여섯 번째(맨 아래) 행을 제거하고, 맨 위와 맨 아래의 수평 거터를 조절하였다. 타일 밸런싱 모듈(1014)은 인접 타일 블록들을 식별할 수 있다. 인접 타일 블록은 제 1 수평 좌표에서 선두 에지를 갖는 첫 번째 타일과, 제 1 수평 좌표 또는 첫 번째 타일에 의해 스패닝된(spanned) 수평 좌표 내에 있는 수평 좌표에서 선두 에지를 갖고 있는 두 번째 타일들 전부와, 이전에 블록에 추가된 타일들의 수평 좌표 내에 선두 에지를 갖고 있는 임의의 세 번째 타일들을 포함할 수 있다.
예를 들어, 인접 블록(1402)은 타일(1)로부터 형성되고, 수평 좌표(0)에 선두 에지를 갖고 있다. 타일(2)은 동일한 좌표에 선두 에지를 갖고 있으며 블록(1402)에 포함된다. 타일(1 및 2)의 스팬에 다른 타일은 존재하지 않는다. 블록(1404)은 타일(3)로부터 형성되고, 수평 좌표(4)에 선두 에지를 갖고 있다. 타일(3)의 스팬에 다른 타일은 존재하지 않는다.
블록(1406)은 타일(4)로부터 형성되며, 수평 좌표(6)를 갖고 있다. 타일(4)은 좌표(6에서 10)에서 스패닝함을 알 것이다. 타일(5)은 타일(4) 아래에 있고, 선두 에지가 8에 있으며, 이는 타일(4)의 스팬 내에 있다. 타일(5)은 좌표(8에서 12)에서 스패닝한다. 타일(6)은 10에 선두 에지가 있으며, 이는 타일(4)의 스팬을 벗어나지만, 타일(4)와 타일(5)를 더한 블록 내에 있고, 그 블록에 포함된다. 타일(4, 5 및 6)의 수평 스팬 내에 다른 타일은 없다.
블록(1408)은 블록(1404)와 유사하게 타일(7)로부터 형성된다.
블록(1410)은 타일들(8 및 9)로부터 형성되고, 수평 좌표(13)에 선두 에지를 갖고 있으며, 전체적으로 좌표(13에서 18)에서 스패닝한다. 타일(10)은 스팬(13에서 18) 내에 있는 16에 선두 에지가 있으며, 블록에 추가된다.
도 14b는, 예를 들어, 타일 밸런싱 모듈(1014)에 의해 프레젠테이션 표면(1302) 상에서 균형이 맞춰진 후의 리플로우된 몽타주(1110)의 일례를 도시한다. 타일 밸런싱 모듈(1014)은 각각의 인접 블록, 예를 들어, 블록들(1402, 1404, 1406, 1408 및 1410)을 검사하고, 블록들이 고정 차원에서 어느 한쪽이 다른 한쪽보다 더 많은 여백을 갖고 있는지를 확인하였다. 예를 들어, 블록(1404)은 타일(3) 아래에 빈 공간인 3 개의 행을 갖고 있다. 불균형인 여백이 식별될 때, 타일 밸런싱 모듈은, 고정 차원에서, 가능한 범위까지 인접 타일 블록을 중앙에 오게 이동시킴으로써 여백의 균형을 맞출 수 있다. 짝수 개의 여백이나 비어 있는 행들이 있는 경우, 그룹 위와 아래에 같은 수의 행이 있도록 그룹이 이동할 수 있다. 홀수 개의 비어 있는 행들이 있으면, 위의 행들의 개수와 아래의 행들의 개수가 한 개 차이가 나도록 그룹이 이동할 수 있다. 블록(1404)은, 즉, 타일(3)은 그 위에 하나의 행을 그 밑에 두 개의 행들을 가짐으로써 중앙에 오게 된다. 일 실시예에서, 타일이 그리드 블록의 일부에 배치되는 경우, 고정 차원에서 그룹 위의 빈 공간과 그룹 아래의 빈 공간을 같게 함으로써 그룹이 중앙에 올 수 있다.
도 15는 몽타주의 리플로우를 위한 논리 흐름(1500)의 일 실시예를 도시한다. 논리 흐름(1500)은 몽타주 애플리케이션(140, 1000)의 프레젠테이션 컴포넌트(532, 1010)와 같이, 본원에서 설명되는 하나 이상의 실시예에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다.
도 15에 도시된 예시적인 실시예에서, 논리 흐름(1500)은 블록(1502)에서 프레젠테이션 표면에 디스플레이하기 위한 몽타주를 수신할 수 있다. 예를 들어, 몽타주 애플리케이션(140)은 컴퓨팅 장치에서 로컬 저장소나 네트워크 저장 서버로부터 몽타주를 수신할 수 있다. 몽타주는 다수의 프레젠테이션 타일들과 참조 레이아웃을 포함할 수 있다. 프레젠테이션 표면은 그리드, 패닝 방향 및 고정 차원을 포함할 수 있다.
논리 흐름(1500)은, 블록(1504)에서, 프레젠테이션 표면의 고정 차원이 참조 레이아웃의 고정 차원보다 더 작은지 여부를 결정할 수 있다. 예를 들어, 프레젠테이션 컴포넌트(1010)는 프레젠테이션 표면의 고정 차원에서 그리드 블록의 개수와 참조 레이아웃의 고정 차원에서 그리드 블록의 개수를 비교할 수 있다.
블록(1504)에서 프레젠테이션 표면의 고정 차원이 더 작지 않으면, 블록(1508)에서 참조 레이아웃을 사용하여 그 원본 형태로 몽타주가 디스플레이될 수 있다.
일 실시예에서(도시되지 않음), 프레젠테이션 표면의 고정 차원이 더 작은 경우, 몽타주가 들어맞도록 스케일링될 수 있다. 예를 들어, 타일들과 프레젠테이션 표면이 원본 몽타주의 임계 백분율보다 작지 않게, 예를 들어, 90 %로 축소되면, 리플로우가 필요 없이 스케일링으로 충분할 수 있다. 스케일링만으로도 충분한지 여부에 영향을 줄 수 있는 다른 팩터들로는, 예를 들어, 임계치에 따라서, 스케일링된 타일들이 너무 작지 않은지, 또는 타일들의 텍스트가 타일 내에 여전히 들어맞는지 및/또는 너무 작지 않은지를 포함할 수 있다.
블록(1504)에서, 프레젠테이션 표면의 고정 차원이 더 작으면(그리고 스케일링이 허용되는 옵션이 아니면), 논리 흐름(1500)은 블록(1506)에서 타일들의 서로에 대한 공간 특성을 보존하면서 그리드의 타일들의 위치를 수정할 수 있다. 블록(1506)의 동작들의 일례가 도 16 및 17에서 설명된다.
다음으로 논리 흐름(1500)은 블록(1508)에서 몽타주를 디스플레이할 수 있다. 몽타주가 블록(1506)에서 리플로우된 경우, 디스플레이는 몽타주의 리플로우된 레이아웃을 사용할 것이다.
도 16은 몽타주의 리플로우에서 타일 배치를 결정하기 위한 논리 흐름(1600)의 일 실시예를 도시한다. 논리 흐름(1600)은 프레젠테이션 컴포넌트(1010)의 타일 리플로우 모듈(1012)와 같이, 본원에서 설명되는 하나 이상의 실시예에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다. 논리 흐름(1600)은 논리 흐름(1500)의 블록(1506)의 동작들 중 일부 또는 전부를 나타낼 수 있다. 논리 흐름(1600)은 도 11 및 13의 예시들에 관해서 예시 목적으로 설명될 수 있는 한편, 이런 예시들에 의해 제한되지는 않는다. 다음의 논의에서, 고정 수직 차원과 수평 패닝 방향을 가정하지만, 논리 흐름(1600)은 고정 수평 차원과 수직 패닝 방향에도 유사하게 실행될 수 있다.
도 16에 도시된 예시적인 실시예에서, 논리 흐름(1600)은 블록(1602)에서 그리드 차원을 갱신할 수 있다. 예를 들어, 프레젠테이션 컴포넌트(1010)는 논리 흐름(1500)의 블록(1504)에서 내려진 결정으로부터 프레젠테이션 표면의 고정 차원을 갱신할 수 있다. 도 11 및 13의 예시들에서, 고정 차원은 7 개의 행에서 6 개의 행으로 갱신될 수 있다.
논리 흐름(1600)은 블록(1604)에서 첫 번째 타일을 선택하고 이를 프레젠테이션 표면 상에 왼쪽 맨 위 코너 위치에 배치할 수 있다. 예를 들어, 타일(1)은 그 왼쪽 맨 위 코너가 그리드 블록에 열(0), 행(0)에 배치된다.
블록(1606)에서, 논리 흐름(1600)은 배치할 추가 타일들이 있는지를 결정할 수 있다. 더 이상 배치할 타일이 없으면, 논리 흐름(1600)은 블록(1626)에서 도 17의 블록(1702)으로 진행될 수 있다. 대안으로, 논리 흐름(1600)이 종료될 수도 있다.
배치할 추가 타일들이 있을 때, 논리 흐름(1600)은 블록(1608)에서 다음 타일을 선택하고 이전 타일에 관한 공간 특성을 결정할 수 있다. 예를 들어, 타일 리플로우 모듈(1012)은 다음 순서인 타일, 예를 들어, 타일(2)을 선택하고, 몽타주의 참조 레이아웃으로부터 타일(1)에 관한 그 공간 특성, 예를 들어, “아래쪽”을 찾아볼 수 있다.
공간 특성에 따라, 결정 블록(1610)에서 다른 배치 규칙들을 따를 수 있다.
공간 특성이 “오른쪽”일 때, 논리 흐름(1600)은 블록(1612)에서 이전 타일의 오른쪽에 인접하여 타일을 배치할 수 있다.
공간 특성이 “아래쪽”일 때, 논리 흐름(1600)은 블록(1614)에서 이전 타일 아래에 현재 타일을 배치할 충분한 공간이 있는지를 결정할 수 있다. 예를 들어, 타일 리플로우 모듈(1012)은 타일의 수직 차원을 이전 타일의 맨 아래 에지 밑의 비어 있는 행의 개수와 비교할 수 있다. 타일의 수직 차원이 이용 가능한 행의 개수를 초과하면, 논리 흐름(1600)은 블록(1616)에서 맨 위의 행에서 이전 타일의 오른쪽에 이용 가능한 첫 번째 열에 타일을 배치한다. 예를 들어, 그 왼쪽 맨 위 코너가 맨 위 행에 놓여지게 타일의 선두 (왼쪽) 에지가 그 열에 배치될 수 있다. 이와 관련하여 용어 “이용 가능한(available)”은 그 안에 아무런 타일도 없으며 타일을 수용하기에 충분히 비어 있는 인접한 열(또는 행) 공간이 있는 열(또는 행)을 가리킬 수 있다.
이전 타일 아래에 공간이 있을 때, 논리 흐름(1600)은 블록(1618)에서 이전 타일 아래에 타일을 배치할 수 있다. 논리 흐름(1600)의 목적을 위해, “아래쪽” 타일의 오프셋은 0이다. 일 실시예에서, 이전 및 현재 타일의 선두 에지들이 정렬될 수 있다. 예시들에서, 타일(2)은 수직 차원 3을 갖고 있고, 타일(1)은 그 밑에 4 개의 비어 있는 행들을 갖고 있다. 따라서, 도 13에서 보이는 대로, 타일(1)의 “아래쪽”에 있는 타일(2)은 타일(1) 밑에 배치될 수 있다.
공간 특성이 “오른쪽 위”일 때, 논리 흐름(1600)은 블록(1620)에서 이전 타일의 선두 에지의 오른쪽으로 그 오프셋 양만큼 타일을 이동시킬 수 있다. 일 실시예에서, 이 타일과 이전 타일은 그들의 맨 위 에지(top edge)를 따라 정렬될 수 있다. 블록(1622)에서 타일들이 이 위치에서 중첩하지 않으면, 논리 흐름(1600)에서 타일이 배치될 수 있다.
타일들이 블록(1622)에서 중첩하면, 논리 흐름(1600)은 블록(1614)에서 이전 타일 밑에 공간이 있는지를 결정할 수 있다. 공간이 있는 경우, 논리 흐름(1600)은 블록(1618)에서 그 선두 에지가 오프셋 위치에 있도록 이전 타일 아래에 타일을 배치할 수 있다.
블록(1614)에서 이전 타일 아래에 공간이 없는 경우, 논리 흐름(1600)은 블록(1616)에서 맨 위 행에서 이전 타일의 오른쪽에 이용 가능한 첫 번째 열에 타일을 배치할 수 있다.
논리 흐름(1600)은 타일 전부가 리플로우되었을 때까지 반복된다.
이제부터 몇몇 대표적인 예시들이 도 13에서 타일들(1 및 2)이 배치된 시점으로부터 시작하여 도 11 및 13과 관련하여 설명된다.
타일(3)은 타일(2)의 “아래쪽”에 있으므로, 논리 흐름(1600)은 블록(1614)에서 타일(2) 밑에 타일(3)을 둘 공간이 없다고 결정한다. 타일(3)은 타일(2)의 오른쪽에 이용 가능한 다음 열의 맨 위에, 예를 들어, 타일(1) 옆에 배치된다.
타일(4)은 타일(3)의 “오른쪽”에 있으므로, 논리 흐름(1600)은 블록(1612)에서 타일(3)의 오른쪽에 인접하여 배치한다.
타일(5)은 오프셋 2만큼 타일(4)의 “오른쪽 위”에 있다. 논리 흐름(1600)은 블록(1620)에서 타일(5)을 타일(4)의 선두 에지의 오른쪽으로 2 개의 열만큼 이동시킨다. 블록(1622)에서, 논리 흐름(1600)은 타일(5)이 타일(4)과 중첩하고 있다고 결정한다. 다음으로 논리 흐름(1600)은 블록(1614)에서 타일(4) 밑에 공간이 있다고 결정하고, 블록(1618)에소 타일(4)의 선두 에지의 오른쪽으로 2 개의 열만큼 가서 타일(4) 밑에 타일(5)을 배치한다.
타일(6)은 타일(5)의 “아래쪽”에 있으므로, 논리 흐름은 블록(1614)에서 타일(5) 밑에 공간이 없다고 결정하고, 블록(1616)에서 타일(5)의 오른쪽에 이용 가능한 다음 열의 맨 위에, 예를 들어, 타일(4) 옆에 타일(6)을 배치한다.
타일(7)은 타일(6)의 “오른쪽”에 있으므로, 논리 흐름(1600)은 블록(1612)에서 타일(7)을 타일(6)의 오른쪽에 인접하여 배치한다.
타일(8)은 오프셋 2만큼 타일(7)의 “오른쪽 위”에 있다. 논리 흐름(1600)은 블록(1620)에서 타일(8)을 타일(7)의 선두 에지의 오른쪽으로 2 개의 열만큼 이동시킨다. 블록(1622)에서, 논리 흐름(1600)은 타일(8)이 타일(7)과 중첩하지 않는다고 결정하고, 블록(1624)에서, 타일(7) 옆에 타일(8)을 배치한다.
타일들(9 및 10)은 각각 타일들(2 및 3)과 유사한 방식으로 배치된다.
논리 흐름(1600)은 리플로우 배치 기법의 일 실시예이다. 본 실시예의 사상을 벗어나지 않고 다른 기법들을 이용할 수 있다. 예를 들어, 다른 공간 특성 정의를 사용하거나, 동일한 공간 특성 정의에 대해 다른 배치 규칙을 사용할 수 있다.
도 17은 몽타주의 밸런싱을 위한 논리 흐름(1700)의 일 실시예를 도시한다. 논리 흐름(1700)은 프레젠테이션 컴포넌트(1010)의 타일 밸런싱 모듈(1014)와 같이, 본원에서 설명되는 하나 이상의 실시예에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다. 논리 흐름(1700)은 논리 흐름(1500)의 블록(1506)의 동작들 중 일부 또는 전부를 나타낼 수 있다. 논리 흐름(1700)은 도 14a 및 14b의 예시들에 관해서 예시 목적으로 설명될 수 있는 한편, 이런 예시들에 의해 제한되지는 않는다. 다음의 논의에서, 고정 수직 차원과 수평 패닝 방향을 가정하지만, 논리 흐름(1700)은 고정 수평 차원과 수직 패닝 방향에도 유사하게 실행될 수 있다.
도 17에 도시된 예시적인 실시예에서, 논리 흐름(1700)은 블록(1702)에서 비어 있는 행과 열을 제거할 수 있다. 예를 들어, 타일 밸런싱 모듈(1014)은 도 13에 도시된 타일들(2, 5, 및 9) 아래의 행을 제거할 수 있다. 일 실시예에서, 남아 있는 타일들의 위와 아래에서 거터들이 조절될 수 있다. 프레젠테이션 표면(1302)이 뷰 포트(1304)에 대해 이동할(shift) 수 있으며, 그 결과가 도 14a이다.
논리 흐름(1700)은 블록(1704)에서 인접 타일 그룹을 식별할 수 있다. 인접 타일 블록은 제 1 수평 좌표에서 선두 에지를 갖는 첫 번째 타일과, 제 1 수평 좌표 또는 첫 번째 타일에 의해 스패닝된 수평 좌표 내에 있는 수평 좌표에서 선두 에지를 갖고 있는 두 번째 타일들 전부와, 이전에 블록에 추가된 타일들의 수평 좌표 내에 선두 에지를 갖고 있는 임의의 타일들을 포함한다. 도 14a에서, 타일들(1 및 2)은 그들의 선두 에지에 대해 동일한 수평 좌표를 갖고 있기 때문에 인접 타일 그룹을 형성하게 된다. 타일들(1 및/또는 2)의 수평 스팬 내에는 아무런 타일도 없다.
논리 흐름(1700)은 그룹이 패닝 방향에 수직으로, 예를 들어, 고정 차원에서 중앙에 위치하는지를 결정할 수 있다. 이와 관련해서, “중앙에 위치한다”는 것은 그룹 위와 아래에 동일한 개수의 그리드 블록들을 갖고 있는 타일들을 포함할 수 있다. “중앙에 위치한다”는 것은 그룹 위의 그리드 블록 개수가 그룹 아래의 그리드 블록 개수와 1만큼 차이가 나는 타일들도 포함할 수 있다. 예를 들어, 그리드 블록에 세 개의 비어 있는 행들이 있는 경우, 그룹 위에 한 개의 행이 있고 아래에 두 개의 행들이 있으면 그룹이 중앙에 위치할 수 있다. 도 14a에서, 비어 있는 행들이 없으므로, 그룹(1402)은 이미 중앙에 위치하게 된다.
논리 흐름(1700)은 블록(1710)에서 타일들이 더 있는지를 결정하고, 있는 경우, 블록(1704)에서 인접 타일들의 다른 그룹을 식별할 수 있다.
블록(1706)에서 타일 그룹이 중앙에 위치하지 않을 때, 논리 흐름(1700)은 그룹을 고정 차원의 중앙에 위치시킬 수 있다. 예를 들어, 타일 밸런싱 모듈(1014)은 도 14a에서 타일(3)을 포함하는 그룹(1404)을 식별할 수 있다. 타일(3)은 그 위에 행이 없고 그 밑에 3 개의 행들을 갖고 있으므로, 타일(3)은 중앙에 위치하지 않는다. 도 14b에 도시된 바와 같이, 타일 밸런싱 모듈(1014)은 타일(3)이 중앙에 위치하도록 타일(3)을 한 개 또는 두 개의 행만큼 아래로 이동시킬 수 있다.
균형을 다시 맞출 추가 타일이 없으면, 논리 흐름(1700)은 블록(1712)에서 종료된다.
도 18a는 타일(1)이 삭제된 원본 몽타주(1110)의 일례를 도시한다. 도 18b는 타일 제거 후에 리플로우된 원본 몽타주(1110)의 일례를 도시한다. 도 18a 및 18b는 도 19의 논리 흐름(1900)과 함께 설명된다.
도 19는 타일이 제거된 후 몽타주의 리플로우를 위한 논리 흐름(1900)의 일 실시예를 도시한다. 논리 흐름(1900)은 프레젠테이션 컴포넌트(1010)의 제거 리플로우 모듈(1022)와 같이, 본원에서 설명되는 하나 이상의 실시예에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다. 논리 흐름(1900)은 도 18a 및 18b의 예시들에 관해서 예시 목적으로 설명될 수 있는 한편, 이런 예시들에 의해 제한되지는 않는다. 다음의 논의에서, 고정 수직 차원과 수평 패닝 방향을 가정하지만, 논리 흐름(1900)은 고정 수평 차원과 수직 패닝 방향에도 유사하게 실행될 수 있다. 몽타주에 프레젠테이션 타일의 추가가 리플로우 동작에 의해 최소화될 수 있는 빈 공간을 생성할 때 논리 흐름(1900)이 유사하게 실행될 수 있다.
도 19에 도시된 예시적인 실시예에서, 논리 흐름(1900)은 블록(1902)에서 몽타주에서 타일을 삭제할 수 있다. 예를 들어, 작성 컴포넌트(1020)는 몽타주(1110)에서 타일(1)을 삭제하기 위한 삭제 명령을 사용자로부터 수신하고 타일을 삭제하여, 몽타주에 빈 공간을 남길 수 있다.
논리 흐름(1900)은 블록(1904)에서 삭제된 타일의 폭에 따라 첫 번째 채널 폭을 지정할 수 있다. 예를 들어, 제거 리플로우 모듈(1022)은 삭제된 타일의 선두 에지의 수평 좌표와 삭제된 타일의 후미(trailing)(오른쪽) 에지 사이로써 채널(1902)을 지정할 수 있다.
논리 흐름(1900)은 블록(1906)에서 후미 에지를 마주칠 때까지 채널의 오른쪽 에지로부터 수색(sweep)할 수 있다. 예를 들어, 제거 리플로우 모듈(1022)은 후미 에지를 마주칠 때까지 첫 번째 채널의 오른쪽 에지로부터 수색할 수 있다. 일 실시예에서, 수색은 도 17의 블록(1704)에서 설명된 인접 타일 블록의 식별과 유사하게 일어날 수 있고, 여기서 수색은 인접 그룹의 타일들의 가장 오른쪽 후미 에지에서 종료될 것이다. 도 18a에서, 이렇게 마주친 다음 후미 에지는 타일들(5 및 7)의 후미 에지들을 포함한다.
논리 흐름(1900)은 블록(1908)에서 수색에서 마주친 타일들의 최대 폭으로부터 다음 채널의 폭을 지정할 수 있다. 예를 들어, 채널(1804)은 채널(1802)의 오른쪽 에지와 타일(5)의 후미 에지에 의해 정의될 수 있다. 채널(1804)에서 타일들의 최대 폭이 타일(5)의 수평 차원이고, 이는 타일들(6 및 7)의 결합된 수평 차원에 상응한다.
논리 흐름(1900)은 블록(1910)에서 바로 전에 정의된 채널의 오른쪽에 추가 타일들이 있는지를 결정할 수 있다. 도 18a에서, 추가적인 타일들이 있으므로 블록들(1906 및 1908)이 반복되어 채널(1806)을 정의한다. 채널(1806)은 타일들(8, 9 및 10)의 최대 폭에 의해 정의되는 폭을 갖고 있다.
블록(1910)에서 오른쪽에 더 이상의 타일이 없으면, 논리 흐름(1900)은 각각의 채널에 대해 왼쪽에서 오른쪽으로 “흐름(current)”을 부여한다. 각각의 채널의 흐름은 인접 채널들에서의 흐름과 그 방향이 반대이다. 흐름은 고정 차원을 따를 수 있다. 예를 들어, 제거 리플로우 모듈(1022)은 채널(1802)에 대해 화살표(1810)로 도시되는 “위쪽” 흐름을 부여할 수 있다. 채널(1804)에는 “아래쪽” 흐름(1812)이 부여될 수 있고, 채널(1806)에는 “위쪽” 흐름(1814)이 부여될 수 있다. 흐름은 리플로우 프로세스가 일어날 때 그 채널에서의 타일들이 어느 방향으로 “흘러갈” 것인지를 나타낼 수 있다.
이어서, 논리 흐름(1900)은 블록(1916)에서, 각각의 타일에 대해 순서대로(블록(1914)), 채널 흐름에서 가능한 한 멀리 타일을 이동시킬 수 있다. 예를 들어, 제거 리플로우 모듈(1022)은 타일(1)이 이전에 차지했던 공간으로 타일(2)을 “위쪽” 방향으로 이동시킬 수 있다. 이와 관련해서, “가능한 한 멀리”란 타일을 수용할 수 있는 차원을 갖는 “다운스트림(downstream)” 빈 공간으로 타일을 이동하는 것을 나타낼 수 있다. 몇몇 실시예에서, 타일은 채널의 다른 타일을 밀치고 지나갈 수는 없음을 알 것이다.
논리 단계(1900)는 블록(1918)에서 첫 번째 채널을 향해 패닝 방향으로 가능한 한 멀리 타일을 이동시킬 수 있다. 이와 관련하여, 좌우 패닝 방향에서, 문구 “가능한 한 멀리”는 타일을 채널 내에서 왼쪽으로 그 타일을 수용할 수 있는 차원을 갖고 있는 빈 공간으로 이동시키는 것을 가리킬 수 있다. 또한, 채널의 진입부에서 왼쪽으로 인접 채널에 충분한 빈 공간이 있는 경우, 타일은 그 공간으로 이동할 수 있다. “위쪽” 채널의 진입구는 채널의 맨 아래이며, “아래쪽” 채널의 진입구는 채널의 맨 위가 될 수 있다. 도 18b에서, 타일(2)은 이미 패닝 방향으로 가능한 한 멀리 있으며 왼쪽으로의 인접 채널이 없다.
논리 흐름(1900)은 블록(1920)에서 타일이 이동할 수 있는 추가적인 빈 공간이 있는지를 결정할 수 있다. 예를 들어, 타일이 인접 채널의 진입구로 이동하였다면, 논리 흐름(1900)은 타일이 이동할 수 있는 다운스트림 빈 공간이 있는지를 결정할 수 있다.
블록(1920)에서 타일을 이동시킬 공간이 더 이상 없을 때, 논리 흐름(1900)은 다음 순서인 타일을 선택하고 루프 입구(1914)로 되돌아갈 수 있고, 또는 타일 전부가 선택되었을 경우, 논리 흐름(1900)은 블록(1922)에서 종료될 수 있다.
도 18a 및 18b에 도시된 예시의 논의를 계속하면, 타일(2)이 이동하면, 블록(1914)에서 타일(3)이 선택된다. 이제 타일(3) 위에는 3 개의 비어 있는 행들이 있고, 도 18b에 도시된 바와 같이, 타일(3)은 채널 흐름에서, 위쪽으로, 그 비어 있는 행들로 이동할 수 있다. 타일(3)은 이미 패닝 방향으로 가능한 한 멀리 있으며, 이동할 추가 공간이 없으므로, 논리 흐름(1900)은 타일(4)을 선택한다.
타일(4)은 그 위에 2 개의 열만큼의 비어 있는 행들을 갖고 있지만, 블록(1916)에서 타일(4)이 위쪽으로 이동하기에는 공간이 충분하지 않다. 그러나, 타일(4)의 왼쪽으로 2 개의 열이 있으므로, 타일(4)은 블록(1918)에서 패닝 방향으로 가능한 한 멀리 이동할 수 있고, 따라서 타일(3)의 아래에 타일(4)이 배치된다.
타일들(5, 6 및 7)은 이동할 수 있는 빈 공간이 없지만, 타일(4)이 이동하였을 때, 4 개의 열 폭과 2 개의 행 길이의 빈 공간이 타일들(6 및 7) 밑에 생성되었다.
타일(8)은 채널(1806)에서 채널 방향으로 더 멀리 이동할 수 없지만, 블록(1918)에서 패닝 방향으로 타일들(6 및 7) 아래에 이동할 수 있다.
다음으로 타일(9)은 채널(1806)에서 위쪽으로 이동하고, 그 다음에 타일(10)이 이동하며, 이 시점에서 논리 흐름(1900)이 종료된다.
타일들의 자동 리플로우로는 타일이 추가되거나 삭제될 때 그로 인해 발생한 빈 공간에 각각의 타일을 수동으로 이동시켜야 하는 사용자의 시간을 절약하게 할 수 있다.
도 20은 전술한 바와 같은 다양한 실시예들을 구현하는 데 적합한 예시적인 컴퓨팅 아키텍처(2000)의 일 실시예를 나타낸다. 컴퓨팅 아키텍처(2000)는 하나 이상의 프로세서, 코-프로세서, 메모리 유닛, 칩셋, 제어기, 주변 장치, 인터페이스, 발진기, 타이밍 장치, 비디오 카드, 오디오 카드, 멀티미디어 입출력(I/O) 컴포넌트 등과 같은 다양한 일반 컴퓨터 요소들을 포함한다. 그러나, 실시예들은 컴퓨팅 아키텍처(2000)에 의한 구현으로 제한되지 않는다.
도 20에 도시된 바와 같이, 컴퓨팅 아키텍처(2000)는 처리 장치(2004), 시스템 메모리(2006) 및 시스템 버스(2008)를 포함한다. 처리 장치(2004)는 임의의의 다양한 상용 프로세서일 수 있다. 이중 마이크로프로세서들 및 다른 다중 프로세서 아키텍처들도 처리 장치(2004)로 사용될 수 있다. 시스템 버스(2008)는 시스템 메모리(2006)를 포함하지만 이에 제한되지 않는 시스템 컴포넌트들의 처리 장치(2004)에 대한 인터페이스를 제공한다. 시스템 버스(2008)는 임의의의 다양한 상용 버스 아키텍처를 이용하는 (메모리 제어기를 갖거나 갖지 않는) 메모리 버스, 주변 장치 버스 및 로컬 버스에 추가적으로 상호 접속될 수 있는 임의의의 다양한 타입의 버스 구조일 수 있다.
시스템 메모리(2006)는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 더블-데이터-레이트 DRAM(DDRAM), 동기 DRAM(SDRAM), 정적 RAM(SRAM), 프로그래밍 가능한 ROM(PROM), 삭제 및 프로그래밍 가능한 ROM(EPROM), 전기적 삭제 및 프로그래밍 가능한 ROM(EEPROM), 플래시 메모리, 강유전체(ferroelectric) 폴리머 메모리와 같은 폴리머 메모리, 오보닉(ovonic) 메모리, 위상 변화 또는 강유전체 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS) 메모리, 자기 또는 광학 카드, 또는 정보를 저장하는 데 적합한 임의의의 다른 타입의 매체와 같은 다양한 타입의 메모리 유닛을 포함할 수 있다. 도 20에 도시된 실시예에서, 시스템 메모리(2006)는 비휘발성 메모리(2010) 및/또는 휘발성 메모리(2012)를 포함할 수 있다. 기본 입/출력 시스템(BIOS)이 비휘발성 메모리(2010)에 저장될 수 있다.
컴퓨터(2002)는 내장형 하드 디스크 드라이브(HDD)(2014), 이동식 자기 디스크(2018)로부터 판독하거나 그에 기록하기 위한 자기 플로피 디스크 드라이브(FDD)(2016), 및 이동식 광 디스크(2022)(예를 들어, CD-ROM 또는 DVD)로부터 판독하거나 그에 기록하기 위한 광 디스크 드라이브(2020)를 포함하는 다양한 타입의 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. HDD(2014), FDD(2016) 및 광 디스크 드라이브(2020)는 HDD 인터페이스(2024), FDD 인터페이스(2026) 및 광 드라이브 인터페이스(2028)에 의해 각각 시스템 버스(2008)에 접속될 수 있다. 외장형 드라이브 구현들을 위한 HDD 인터페이스(2024)는 유니버설 직렬 버스(USB) 및 IEEE 1394 인터페이스 기술들 중 적어도 하나 또는 양쪽 모두를 포함할 수 있다.
드라이브들 및 관련 컴퓨터 판독 가능 매체들은 데이터, 데이터 구조들, 컴퓨터 실행 가능한 명령어들 등의 휘발성 및/또는 비휘발성 저장을 제공한다. 예를 들어, 운영 체제(2030), 하나 이상의 애플리케이션 프로그램(2032), 다른 프로그램 모듈들(2034) 및 프로그램 데이터(2036)를 포함하는 다수의 프로그램 모듈이 드라이브들 및 메모리 유닛들(2010, 2012)에 저장될 수 있다. 하나 이상의 애플리케이션 프로그램(2032), 다른 프로그램 모듈들(2034) 및 프로그램 데이터(2036)는, 예를 들어, 몽타주 애플리케이션(140), 작성 컴포넌트(110), 프레젠테이션 컴포넌트(130), 보안 컴포넌트(536), 발행 컴포넌트(532), 메시지 컴포넌트(534), 사용자 인터페이스(538) 및 메시징 애플리케이션(542)을 포함할 수 있다.
사용자는 하나 이상의 유/무선 입력 장치, 예를 들어, 키보드(2038) 및 마우스(2040)와 같은 포인팅 장치를 통해 컴퓨터(2002) 내에 명령들 및 정보를 입력할 수 있다. 다른 입력 장치들은 마이크, 적외선(IR) 원격 제어, 조이스틱, 게임 패드, 스타일러스 펜, 터치 스크린 등을 포함할 수 있다. 이들 및 다른 입력 장치들은 종종 시스템 버스(2008)에 결합되는 입력 장치 인터페이스(2042)를 통해 처리 장치(2004)에 접속되지만, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등과 같은 다른 인터페이스들에 의해 접속될 수 있다.
모니터(2044) 또는 다른 타입의 디스플레이 장치는 비디오 어댑터(2046)와 같은 인터페이스를 통해 시스템 버스(2008)에 접속된다. 모니터(2044)에 더하여, 컴퓨터는 통상적으로 스피커, 프린터 등과 같은 다른 주변 출력 장치들을 포함한다.
컴퓨터(2002)는 원격 컴퓨터(2048)와 같은 하나 이상의 원격 컴퓨터에 대한 유선 및/또는 무선 통신을 통해 논리 접속들을 이용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(2048)는 워크스테이션, 서버 컴퓨터, 라우터, 개인용 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서 기반 엔터테인먼트 기기, 피어 장치 또는 다른 일반 네트워크 노드일 수 있으며, 간소화를 위해 메모리/저장 장치(2050)만이 도시되어 있지만, 통상적으로는 컴퓨터(2002)에 관해 설명된 요소들 중 다수 또는 전부를 포함한다. 도시된 논리 접속들은 근거리 네트워크(LAN)(2052) 및/또는 더 큰 네트워크들, 예를 들어, 광역 네트워크(WAN)(2054)에 대한 유선/무선 접속을 포함한다. 이런 LAN 및 WAN 네트워킹 환경들은 사무실들 및 회사들에서 일반적이고, 인트라넷과 같은 기업 광역 컴퓨터 네트워크들을 용이하게 하며, 이들 모두는 글로벌 통신 네트워크, 예를 들어, 인터넷에 접속할 수 있다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(2002)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(2056)를 통해 LAN(2052)에 접속된다. 어댑터(2056)는 어댑터(2056)의 무선 기능과 통신하기 위해 배치된 무선 액세스 포인트도 포함할 수 있는 LAN(2052)에 대한 유선 및/또는 무선 통신을 용이하게 할 수 있다.
WAN 네트워킹 환경에서 사용될 때, 컴퓨터(2002)는 모뎀(2058)을 포함할 수 있거나, WAN(2054) 상의 통신 서버에 접속되거나, WAN(2054)을 통해, 예를 들어, 인터넷을 통해 통신을 설정하기 위한 다른 수단을 갖는다. 내장형 또는 외장형 및 유선 및/또는 무선 장치일 수 있는 모뎀(2058)은 입력 장치 인터페이스(2042)를 통해 시스템 버스(2008)에 접속한다. 네트워킹된 환경에서, 컴퓨터(2002) 또는 그의 부분들에 대해 도시된 프로그램 모듈들은 원격 메모리/저장 장치(2050)에 저장될 수 있다. 도시된 네트워크 접속들은 예시적이며, 컴퓨터들 사이에 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 알 것이다.
컴퓨터(2002)는, 예를 들어, 프린터, 스캐너, 데스크탑 및/또는 휴대용 컴퓨터, 개인용 휴대 단말기(PDA), 통신 위성, 무선 검출 가능 태그와 관련된 임의의의 장비 또는 장소(예를 들어, 키오스크, 뉴스 스탠드, 화장실) 및 전화와 무선 통신(예를 들어, IEEE 802.11 무선 변조 기술들)하도록 기능적으로 배치된 무선 장치들과 같이 IEEE 802 표준 패밀리를 사용하는 유선 및 무선 장치들 또는 엔티티들과 통신하도록 동작할 수 있다. 이것은 적어도 Wi-Fi(즉, Wireless Fidelity), WiMax 및 BluetoothTM 무선 기술들을 포함한다. 따라서, 통신은 전통적인 네트워크에서와 같은 사전 정의된 구조, 또는 단순히 적어도 2개의 장치들 사이의 애드혹 통신일 수 있다. Wi-Fi 네트워크들은 IEEE 802.11x(a, b, g 등)라고 하는 무선 기술들을 사용하여, 안전하고, 신뢰성 있고, 빠른 무선 접속을 제공한다. Wi-Fi 네트워크는 컴퓨터들을 서로, 인터넷에, 그리고 (IEEE 802.3 관련 매체들 및 기능들을 이용하는) 유선 네트워크들에 접속하는 데 사용될 수 있다.
다양한 실시예들은 하드웨어 요소들, 소프트웨어 요소들 또는 이들 양자의 조합을 이용하여 구현될 수 있다. 하드웨어 요소들의 예는 장치, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 회로 요소(예를 들어, 트랜지스터, 저항기, 캐패시터, 인덕터 등), 집적 회로, 주문형 집적 회로(ASIC), 프로그래밍 가능한 논리 장치(PLD), 디지털 신호 프로세서(DSP), 필드 프로그래머블 게이트 어레이(FPGA), 메모리 유닛, 논리 게이트, 레지스터, 반도체 장치, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프트웨어 요소들의 예는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 기계 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 임의의 조합을 포함할 수 있다. 실시예를 하드웨어 요소들 및/또는 소프트웨어 요소들을 이용하여 구현할지에 대한 결정은 특정 구현에서 필요한 대로, 원하는 계산 레이트, 전력 레벨, 열 허용 한계, 처리 사이클 예산, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 기타 설계 또는 성능 제약과 같은 임의의 수의 팩터에 따라 달라질 수 있다.
일부 실시예들은 제조물을 포함할 수 있다. 제조물은 논리를 저장하기 위한 저장 매체를 포함할 수 있다. 저장 매체의 예는 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 비이동식 메모리, 삭제 가능 또는 삭제 불가 메모리, 기록 가능 또는 재기록 가능 메모리 등을 포함하는, 전자 데이터를 저장할 수 있는 하나 이상의 타입의 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 논리의 예는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 기계 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 임의의 조합과 같은 다양한 소프트웨어 요소들을 포함할 수 있다. 일 실시예에서, 예를 들어, 제조물은 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 설명되는 실시예들에 따른 방법들 및/또는 동작들을 수행하게 하는 실행 가능한 컴퓨터 프로그램 명령어들을 저장할 수 있다. 실행 가능한 컴퓨터 프로그램 명령어들은 소스 코드, 컴파일된 코드, 해석된 코드, 실행 가능한 코드, 정적 코드, 동적 코드 등과 같은 임의의의 적절한 타입의 코드를 포함할 수 있다. 실행 가능한 컴퓨터 프로그램 명령어들은 특정 기능을 수행하도록 컴퓨터에 지시하기 위해 사전 정의된 컴퓨터 언어, 방식 또는 신택스에 따라 구현될 수 있다. 명령어들은 임의의의 적절한 고레벨, 저레벨, 객체 지향, 비주얼, 컴파일 및/또는 해석된 프로그래밍 언어를 이용하여 구현될 수 있다.
일부 실시예들은 "하나의 실시예(one embodiment)" 또는 "일 실시예(an embodiment)"라는 표현 및 이들의 파생어들을 이용하여 설명될 수 있다. 이러한 용어들은 그 실시예와 관련하여 설명되는 특정 특징, 구조 또는 특성이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서의 다양한 곳에서의 "하나의 실시예에서(in one embodiment)"라는 문구의 출현들은 모두가 반드시 동일 실시예를 지칭하지는 않는다.
일부 실시예들은 "결합(coupled)" 및 "접속(connected)"이라는 표현 및 이들의 파생물들을 이용하여 설명될 수 있다. 이러한 용어들은 반드시 서로에 대한 동의어들인 것을 의도하지는 않는다. 예컨대, 일부 실시예들은 둘 이상의 요소가 서로 직접적인 물리적 또는 전기적 접촉을 한다는 것을 지시하기 위해 "접속(connected)" 및/또는 "결합(coupled)"이라는 용어들을 이용하여 설명될 수 있다. 그러나, "결합(coupled)"이라는 용어는 둘 이상의 요소가 서로 직접 접촉하지는 않지만 여전히 서로 협력하거나 상호작용한다는 것을 의미할 수도 있다.
본 명세서의 요약서는 37 C.F.R. Section 1.72(b)에 따라 제공되며, 요약서가 독자로 하여금 기술 명세서의 특징을 빠르게 확인할 수 있게 하여야 한다는 것을 강조한다. 요약서는 특허청구범위의 범위 또는 의미를 해석하거나 제한하는 데 사용되지 않을 것이라는 이해와 더불어 제출된다. 게다가, 위의 상세한 설명에서는, 개시를 간소화하기 위해 다양한 특징들이 단일 실시예 내에 함께 그룹화된다는 것을 알 수 있다. 이러한 개시 방법은 청구되는 실시예들이 각각의 청구항에 명확히 기재된 것보다 많은 특징을 필요로 한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 그보다는, 아래의 청구항들이 나타내듯이, 본 발명 대상은 단일의 개시된 실시예의 모든 특징들보다 적은 특징 내에 존재한다. 따라서, 아래의 청구항들은 상세한 설명 내에 포함되며, 각각의 청구항은 개별 실시예로써 그 자신에 의거한다. 첨부된 청구항들에서, 용어들 "포함하는(including)" 및 "에 있어서(in which)"는 각각의 용어 "포함하는(comprising)" 및 "에 있어서(wherein)"의 평문 균등물들로서 각각 사용된다. 더욱이, 용어 "제 1(first)", "제 2(second)", "제 3(third)" 등은 단지 표시들로써 사용될 뿐, 그 대상들에 대해 수치적 요구 사항을 부과하도록 의도되지 않는다.
본 발명 대상은 구조적인 특징들 및/또는 방법적 동작들에 고유한 언어로 설명되었지만, 첨부된 특허청구범위에 정의된 발명 대상은 반드시 전술한 특정 특징들 또는 동작들로 제한될 필요가 없다는 것을 이해해야 한다. 오히려, 전술한 특정 특징들 및 동작들은 특허청구범위를 구현하는 예시적인 형태들로서 개시된다.

Claims (10)

  1. 디스플레이 상의 프레젠테이션 표면에 제공할 몽타주를 수신하는 단계 - 상기 몽타주는 다수의 프레젠테이션 타일들과 참조 레이아웃을 포함하고, 상기 프레젠테이션 표면은 그리드를 포함하고 패닝 방향을 갖고 있음 -,
    상기 패닝 방향에 수직인 고정 그리드 차원이 상기 참조 레이아웃의 대응하는 그리드 차원보다 상기 디스플레이 상에서 더 작을 때를 결정하는 단계,
    서로에 대한 상기 프레젠테이션 타일들의 공간 특성을 보존하면서, 상기 그리드 상에서 상기 다수의 프레젠테이션 타일들의 위치들을 수정하는 단계, 및
    상기 수정된 위치들에서 상기 다수의 프레젠테이션 타일들을 갖는 상기 프레젠테이션 표면의 사용자 인터페이스 뷰를 제공하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 방법은
    상기 참조 레이아웃으로부터 프레젠테이션 타일 순서를 결정하는 단계,
    상기 그리드의 기점에 제 1 프레젠테이션 타일을 배치하는 단계,
    상기 프레젠테이션 타일 순서에서 제 2 프레젠테이션 타일을 선택하는 단계,
    상기 제 1 프레젠테이션 타일에 대해 상대적으로 상기 제 2 프레젠테이션 타일의 공간 특성을 결정하는 단계, 및
    상기 공간 특성에 따라 상기 그리드에 상기 제 2 프레젠테이션을 배치하는 단계를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    공간 특성은 제 1 방향, 제 2 방향, 또는 제 3 방향 중 어느 하나를 포함하고, 상기 제 3 방향은 오른쪽 오프셋을 포함하며, 상기 기점은 상기 그리드의 맨 위 코너에 있으며, 상기 그리드에 상기 제 2 타일을 배치하는 단계는
    상기 제 1 프레젠테이션 타일의 오른쪽에 인접하여 제 1 방향 프레젠테이션 타일을 배치하는 단계,
    상기 그리드에 충분한 공간이 있을 때 상기 제 1 프레젠테이션 타일 아래에 제 2 방향 프레젠테이션 타일을 배치하는 단계,
    상기 제 1 프레젠테이션 타일 아래에 상기 제 2 방향 프레젠테이션 타일을 배치할 충분한 공간이 없을 때, 상기 그리드의 맨 위의 행에서 프레젠테이션 타일의 오른쪽으로 상기 그리드에서 이용 가능한 첫 번째 열에 제 2 방향 프레젠테이션 타일을 배치하는 단계,
    상기 제 1 프레젠테이션 타일의 오른쪽으로 오른쪽 오프셋의 열의 개수만큼 떨어져 제 3 방향 프레젠테이션 타일을 배치하고 상기 제 3 방향 프레젠테이션 타일과 상기 제 1 프레젠테이션 타일이 중첩하는지를 결정하는 단계,
    상기 제 3 방향 프레젠테이션 타일과 상기 제 1 프레젠테이션 타일이 중첩하고 상기 제 1 프레젠테이션 타일 아래에 상기 제 3 방향 프레젠테이션 타일을 배치할 공간이 있을 때, 상기 제 1 프레젠테이션 타일의 아래에 그리고 그 오른쪽으로 오른쪽 오프셋의 열의 개수만큼 상기 제 3 방향 프레젠테이션 타일을 이동시키는 단계, 및
    상기 제 3 방향 프레젠테이션 타일과 상기 제 1 프레젠테이션 타일이 중첩하지만 상기 제 1 타일 아래에 상기 제 3 방향 프레젠테이션 타일을 배치할 공간이 없을 때, 상기 그리드의 맨 위의 행에서 프레젠테이션 타일의 오른쪽에 이용 가능한 첫 번째 열로 상기 제 3 방향 프레젠테이션 타일을 이동시키는 단계를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 방법은
    몽타주에 프레젠테이션 타일을 추가하거나 상기 몽타주로부터 프레젠테이션 타일을 삭제하는 것에 의해 생성되는 빈 공간의 폭과 일치하는 패닝 방향의 폭을 갖고 있는 제 1 채널을 정의하는 단계,
    상기 제 1 채널의 후미 에지에서 패닝 방향으로 선두 에지를 갖고 있는 인접 타일 블록을 식별하는 단계,
    상기 인접 타일 블록의 폭을 갖는 제 2 채널을 정의하는 단계,
    각각의 채널에 흐름을 부여하는 단계 - 흐름은 고정 차원에 맞춰 정렬되며, 상기 인접 채널들의 흐름들은 반대 방향으로 흐름 -,
    상기 프레젠테이션 타일 순서대로 각각의 타일을 선택하는 단계,
    채널에서 흐름 방향으로 가능한 한 멀리 타일을 이동시키는 단계, 및
    상기 채널 또는 상기 채널의 선두 에지에 인접한 채널 중 어느 하나에서 상기 패닝 방향으로 가능한 한 멀리 상기 타일을 이동시키는 단계를 더 포함하는 방법.
  5. 실행 시에, 시스템으로 하여금 청구항 1, 2, 3, 또는 4 중 어느 한 항의 방법을 실행하게 하는 명령어를 포함하는 저장 매체를 포함하는 제조물.
  6. 그리드와 패닝 방향을 포함하는 프레젠테이션 표면에 몽타주를 제공하기 위해 제 1 사용자 인터페이스 뷰를 생성하도록 동작하는 프레젠테이션 컴포넌트를 포함하는 몽타주 애플리케이션을 실행하도록 배치된 논리 장치를 포함하는 장치에 있어서, 상기 몽타주는 다수의 프레젠테이션 타일들과 참조 레이아웃을 포함하고, 상기 프레젠테이션 컴포넌트는
    상기 패닝 방향에 수직인 고정 그리드 차원이 상기 참조 레이아웃의 대응하는 그리드 차원보다 상기 디스플레이 상에서 더 작을 때를 결정하고,
    서로에 대한 상기 프레젠테이션 타일들의 공간 특성을 보존하면서, 상기 그리드 상에서 상기 다수의 프레젠테이션 타일들의 위치들을 수정하며,
    상기 제 1 사용자 인터페이스 뷰에서 상기 프레젠테이션 표면 상의 상기 수정된 위치에 상기 다수의 프레젠테이션 타일들을 제공하도록 동작하는 장치.
  7. 제 6 항에 있어서,
    상기 프레젠테이션 컴포넌트는
    상기 참조 레이아웃으로부터 프레젠테이션 타일 순서를 결정하고,
    상기 그리드의 기점에 제 1 프레젠테이션 타일을 배치하고,
    상기 프레젠테이션 타일 순서에서 제 2 프레젠테이션 타일을 선택하고,
    상기 제 1 프레젠테이션 타일에 대해 상대적으로 상기 제 2 프레젠테이션 타일의 공간 특성을 결정하고,
    상기 공간 특성에 따라 상기 그리드에 상기 제 2 프레젠테이션을 배치하도록 동작하는 장치.
  8. 제 7 항에 있어서,
    공간 특성은 제 1 방향, 제 2 방향, 또는 제 3 방향 중 어느 하나를 포함하고, 상기 제 3 방향은 오른쪽 오프셋을 포함하며, 상기 기점은 상기 그리드의 맨 위 코너에 있으며, 상기 프레젠테이션 컴포넌트는
    상기 제 1 프레젠테이션 타일의 오른쪽에 인접하여 제 1 방향 프레젠테이션 타일을 배치하고,
    상기 그리드에 충분한 공간이 있을 때 상기 제 1 프레젠테이션 타일 아래에 제 2 방향 프레젠테이션 타일을 배치하고,
    상기 제 1 프레젠테이션 타일 아래에 상기 제 2 방향 프레젠테이션 타일을 배치할 충분한 공간이 없을 때, 상기 그리드의 맨 위의 행에서 프레젠테이션 타일의 오른쪽으로 상기 그리드에서 이용 가능한 첫 번째 열에 제 2 방향 프레젠테이션 타일을 배치하고,
    상기 제 1 프레젠테이션 타일의 오른쪽으로 오른쪽 오프셋의 열의 개수만큼 떨어져 제 3 방향 프레젠테이션 타일을 배치하고 상기 제 3 방향 프레젠테이션 타일과 상기 제 1 프레젠테이션 타일이 중첩하는지를 결정하고,
    상기 제 3 방향 프레젠테이션 타일과 상기 제 1 프레젠테이션 타일이 중첩하고 상기 제 1 프레젠테이션 타일 아래에 상기 제 3 방향 프레젠테이션 타일을 배치할 공간이 있을 때, 상기 제 1 프레젠테이션 타일의 아래에 그리고 그 오른쪽으로 오른쪽 오프셋의 열의 개수만큼 상기 제 3 방향 프레젠테이션 타일을 이동시키고,
    상기 제 3 방향 프레젠테이션 타일과 상기 제 1 프레젠테이션 타일이 중첩하지만 상기 제 1 타일 아래에 상기 제 3 방향 프레젠테이션 타일을 배치할 공간이 없을 때, 상기 그리드의 맨 위의 행에서 프레젠테이션 타일의 오른쪽에 이용 가능한 첫 번째 열로 상기 제 3 방향 프레젠테이션 타일을 이동시키도록 동작하는 장치.
  9. 제 6 항에 있어서,
    상기 프레젠테이션 컴포넌트는
    상기 그리드에서 비어 있는 임의의 열과 행을 제거하고,
    상기 패닝 방향으로 프레젠테이션 타일들의 인접 그룹을 식별하고,
    상기 프레젠테이션 타일들의 인접 그룹이 고정 차원에서 상기 그리드의 중앙에 위치하는지를 결정하며,
    상기 고정 차원에서 상기 프레젠테이션 타일들의 인접 그룹을 중앙에 위치시키도록 동작하는 장치.
  10. 제 6 항에 있어서,
    상기 장치는
    몽타주에 프레젠테이션 타일을 추가하거나 상기 몽타주로부터 프레젠테이션 타일을 삭제하는 것에 의해 생성되는 빈 공간의 폭과 일치하는 패닝 방향의 폭을 갖고 있는 제 1 채널을 정의하고,
    상기 제 1 채널의 후미 에지에서 패닝 방향으로 선두 에지를 갖고 있는 인접 타일 블록을 식별하고,
    상기 인접 타일 블록의 폭을 갖는 제 2 채널을 정의하고,
    각각의 채널에 흐름을 부여하고 - 흐름은 고정 차원에 맞춰 정렬되며, 상기 인접 채널들의 흐름들은 반대 방향으로 흐름 -,
    순서대로 각각의 타일을 선택하고,
    채널에서 흐름 방향으로 가능한 한 멀리 타일을 이동시키거나, 또는
    상기 채널 또는 상기 채널의 선두 에지에 인접한 채널 중 어느 하나에서 상기 패닝 방향으로 가능한 한 멀리 상기 타일을 이동시키는 것 중에서 적어도 하나를 실행하도록 동작하는 작성 컴포넌트를 더 포함하는 장치.
KR1020147007521A 2011-09-23 2012-09-23 그리드 상에서 프레젠테이션 타일의 동적 레이아웃을 위한 기법 KR101985558B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/242,009 2011-09-23
US13/242,009 US9679404B2 (en) 2010-12-23 2011-09-23 Techniques for dynamic layout of presentation tiles on a grid
PCT/US2012/056789 WO2013044194A2 (en) 2011-09-23 2012-09-23 Techniques for dynamic layout of presentation tiles on a grid

Publications (2)

Publication Number Publication Date
KR20140069007A true KR20140069007A (ko) 2014-06-09
KR101985558B1 KR101985558B1 (ko) 2019-06-03

Family

ID=47644720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147007521A KR101985558B1 (ko) 2011-09-23 2012-09-23 그리드 상에서 프레젠테이션 타일의 동적 레이아웃을 위한 기법

Country Status (7)

Country Link
EP (1) EP2758862B1 (ko)
JP (1) JP6054401B2 (ko)
KR (1) KR101985558B1 (ko)
CN (1) CN102929922B (ko)
AR (1) AR087887A1 (ko)
TW (1) TWI579827B (ko)
WO (1) WO2013044194A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133704B2 (en) * 2012-11-07 2018-11-20 Microsoft Technology Licensing, Llc Dynamic layout of content in a grid based application
CN104166562B (zh) * 2013-09-25 2018-08-28 穆建鑫 用于视窗操作系统中应用程序磁贴的生成方法及装置
CN104516880A (zh) * 2013-09-26 2015-04-15 Sap欧洲公司 图形的基于区块的布局
CN104571783B (zh) * 2013-10-23 2018-02-27 富泰华工业(深圳)有限公司 具有动态拼图界面的电子装置及控制方法与系统
CN104571785A (zh) * 2013-10-24 2015-04-29 富泰华工业(深圳)有限公司 具有动态拼图界面的电子装置及群组控制方法与系统
CN104571786B (zh) 2013-10-25 2018-09-14 富泰华工业(深圳)有限公司 具有动态拼图界面的电子装置及其控制方法与系统
TWI722981B (zh) * 2014-03-25 2021-04-01 美商觸控調諧音樂公司 具改良使用者介面的數位點唱機裝置及相關聯方法
US9329761B2 (en) * 2014-04-01 2016-05-03 Microsoft Technology Licensing, Llc Command user interface for displaying and scaling selectable controls and commands
US10489947B2 (en) 2016-03-09 2019-11-26 Htc Corporation Mobile device, application display method, and non-transitory computer readable storage medium
CN112416347B (zh) * 2020-11-25 2022-07-12 中睿信数字技术有限公司 一种基于栅格和动态磁贴的网页布局方法
US20230059021A1 (en) * 2021-08-23 2023-02-23 Jobby Inc. Portal and interface system and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040255244A1 (en) * 2003-04-07 2004-12-16 Aaron Filner Single column layout for content pages
KR20070118083A (ko) * 2005-04-01 2007-12-13 마이크로소프트 코포레이션 애플리케이션 윈도우의 그룹핑 및 관리를 위한 방법 및장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844883A (ja) * 1994-08-03 1996-02-16 Matsushita Electric Ind Co Ltd 自動レイアウト装置
US7028264B2 (en) * 1999-10-29 2006-04-11 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US7199889B2 (en) * 2001-07-02 2007-04-03 Alps Elecric Co., Ltd. Printer capable of invalidating a document
AUPR962001A0 (en) * 2001-12-19 2002-01-24 Redbank Manor Pty Ltd Document display system and method
US8220018B2 (en) * 2002-09-19 2012-07-10 Tvworks, Llc System and method for preferred placement programming of iTV content
TWI243571B (en) * 2003-07-17 2005-11-11 Inventec Appliances Corp Mobile communication device with picture editing function and processing method thereof and storage medium storing computer program for executing the method
US20050237321A1 (en) * 2004-03-31 2005-10-27 Young Kenneth L Grid canvas
US7656543B2 (en) * 2004-11-12 2010-02-02 Hewlett-Packard Development Company, L.P. Albuming images
US20080218532A1 (en) * 2007-03-08 2008-09-11 Microsoft Corporation Canvas-like authoring experience atop a layout engine
TW200919371A (en) * 2007-10-19 2009-05-01 Goqoo Online Entertainment Ltd Picture editing method of animation
US9225610B2 (en) * 2008-03-31 2015-12-29 Hitachi, Ltd. User interface providing information system topology presentation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040255244A1 (en) * 2003-04-07 2004-12-16 Aaron Filner Single column layout for content pages
KR20070118083A (ko) * 2005-04-01 2007-12-13 마이크로소프트 코포레이션 애플리케이션 윈도우의 그룹핑 및 관리를 위한 방법 및장치

Also Published As

Publication number Publication date
KR101985558B1 (ko) 2019-06-03
JP6054401B2 (ja) 2016-12-27
WO2013044194A2 (en) 2013-03-28
CN102929922A (zh) 2013-02-13
JP2015503132A (ja) 2015-01-29
EP2758862B1 (en) 2020-08-05
AR087887A1 (es) 2014-04-23
TW201314670A (zh) 2013-04-01
CN102929922B (zh) 2016-08-03
EP2758862A4 (en) 2015-04-08
WO2013044194A3 (en) 2013-05-16
TWI579827B (zh) 2017-04-21
EP2758862A2 (en) 2014-07-30

Similar Documents

Publication Publication Date Title
US9679404B2 (en) Techniques for dynamic layout of presentation tiles on a grid
US10515139B2 (en) Techniques for electronic aggregation of information
US10331335B2 (en) Techniques for electronic aggregation of information
KR101985558B1 (ko) 그리드 상에서 프레젠테이션 타일의 동적 레이아웃을 위한 기법
RU2625938C2 (ru) Методика для электронной агрегации информации
JP6231981B2 (ja) コンテンツファイルを表すカスタムオブジェクトを生成するための技法
US20120166496A1 (en) Techniques for generating custom objects representing content files
KR20140043394A (ko) 콘텐트 파일을 제시하는 맞춤 객체 생성 기법

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant